当前位置: 首页 > news >正文

有口碑的坪山网站建设unity做网站

有口碑的坪山网站建设,unity做网站,seo门户网站建设方案,可信网站网站认证反射 反射,指的是加载类的字节码到内存,并以编程的方法解刨出类中的各个成分(成员变量、方法、构造器等)。 1.获取类的字节码 (3种方式) public class Test1Class{public static void main(String[] arg…

反射

反射,指的是加载类的字节码到内存,并以编程的方法解刨出类中的各个成分(成员变量、方法、构造器等)。

1.获取类的字节码 (3种方式)

public class Test1Class{public static void main(String[] args){Class c1 = Student.class;System.out.println(c1.getName()); //获取全类名System.out.println(c1.getSimpleName()); //获取简单类名Class c2 = Class.forName("com.casey.reflect.Student");System.out.println(c1 == c2); //trueStudent s = new Student();Class c3 = s.getClass();System.out.println(c2 == c3); //true}
}

2.获取构造器 

通过第一步获取的字节码对象获取构造器。

作用 

构造器的作用:初始化对象并返回

由于构造器是private修饰的,先需要调用setAccessible(true) 表示禁止检查访问控制,然后再调用newInstance(实参列表) 就可以执行构造器,完成对象的初始化了。反射可以破坏封装性  

3.获取成员变量 

如何使用 

Filed类中提供给给成员变量赋值和获取值的方法

4.获取成员方法 

如何使用 

在Method类中提供了方法,可以将方法自己执行起来。


注解 

让其他程序根据注解信息决定怎么执行该程序

自定义注解 

注解的属性名如果是value的话,并且只有value没有默认值,使用注解时value名称可以省略。  

1.注解本质上是接口,每一个注解接口都继承子Annotation接口
2.注解中的属性本质上是抽象方法
3.@MyTest1实际上是作为MyTest接口的实现类对象
4.@MyTest1(aaa="孙悟空",bbb=false,ccc={"Python","前端","Java"})里面的属性值,可以通过调用aaa()、bbb()、ccc()方法获取到。 

元注解 

元注解是修饰注解的注解

 

@Retetion是用来声明注解保留周期,比如:源代码时期、字节码时期、运行时期
@Retetion(RetetionPloicy.SOURCE): 注解保留到源代码时期、字节码中就没有了
@Retetion(RetetionPloicy.CLASS): 注解保留到字节码中、运行时注解就没有了
@Retetion(RetetionPloicy.RUNTIME):注解保留到运行时期

【自己写代码时,比较常用的是保留到运行时期】 

解析注解 

把获取类上、方法上、变量上等位置注解及注解属性值的过程称为解析注解。

1.如果注解在类上,先获取类的字节码对象,再获取类上的注解
2.如果注解在方法上,先获取方法对象,再获取方法上的注解
3.如果注解在成员变量上,先获取成员变量对象,再获取变量上的注解
总之:注解在谁身上,就先获取谁,再用谁获取谁身上的注解

 

用例:

要求有@MyTest注解的方法可以被框架执行,没有@MyTest注解的方法不能被框架执行。

1.自定义注解 

@Target(ElementType.METHOD)	
@Retetion(RetetionPloicy.RUNTIME)
public @interface MyTest{}

2.写一个测试类AnnotationTest4,在类中定义几个被@MyTest注解标记的方法  

public class AnnotationTest4{@MyTestpublic void test1(){System.out.println("=====test1====");}@MyTestpublic void test2(){System.out.println("=====test2====");}public void test3(){System.out.println("=====test2====");}public static void main(String[] args){AnnotationTest4 a = new AnnotationTest4();//1.先获取Class对象Class c = AnnotationTest4.class;//2.解析AnnotationTest4类中所有的方法对象Method[] methods = c.getDeclaredMethods();for(Method m: methods){//3.判断方法上是否有MyTest注解,有就执行该方法if(m.isAnnotationPresent(MyTest.class)){m.invoke(a);}}}
}

动态代理 

细品~~~

先把有唱歌和跳舞方法的接口,和实现接口的明星类定义出来。  

 

生成动态代理对象

提供的一个生成代理对象的类叫Proxy类。

通过Proxy类的newInstance(...)方法可以为实现了同一接口的类生成代理对象。

public class ProxyUtil {public static Star createProxy(BigStar bigStar){/* newProxyInstance(ClassLoader loader,Class<?>[] interfaces,InvocationHandler h)参数1:用于指定一个类加载器参数2:指定生成的代理长什么样子,也就是有哪些方法参数3:用来指定生成的代理对象要干什么事情*/// Star starProxy = ProxyUtil.createProxy(s);// starProxy.sing("好日子") starProxy.dance()Star starProxy = (Star) Proxy.newProxyInstance(ProxyUtil.class.getClassLoader(),new Class[]{Star.class}, new InvocationHandler() {@Override // 回调方法public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {// 代理对象要做的事情,会在这里写代码if(method.getName().equals("sing")){System.out.println("准备话筒,收钱20万");}else if(method.getName().equals("dance")){System.out.println("准备场地,收钱1000万");}return method.invoke(bigStar, args);}});return starProxy;}
}

调用代理工具类,为Star生成代理对象

public class Test {public static void main(String[] args) {BigStar s = new BigStar("杨超越");Star starProxy = ProxyUtil.createProxy(s);String rs = starProxy.sing("好日子");System.out.println(rs);starProxy.dance();}
}

 

 

 

 

http://www.yayakq.cn/news/260391/

相关文章:

  • 网站开发用哪个框架什么地图能看到实时全景免费
  • php网站模板免费下载新手学建设网站书籍
  • 东莞网站建设咨询公免费主页空间申请
  • 电子商务网站策划书3000字青岛网站建设工作室织梦模板
  • 四川专业网站建设建e室内设计网案例
  • 如何创建一个自己公司网站手机网站可以直接做百度推广不
  • 网站网页设计多少钱高安网站建设
  • 深圳多语言网站建设dedecms网站信息统计
  • 网站做下子压缩文件的链接制作相册小程序
  • 佛山做外贸网站推广部队网站模板jsp
  • 织梦 网站图标excel表格做网站
  • 织梦制作手机网站模板免费下载微信与与网站建设
  • 响应式手机网站模版seo优化网站建设
  • 双语网站方法如何去除网站外链
  • 关于网站设计的书wordpress设置超链接
  • wordpress模板适合做什么站wordpress提交360
  • 水头网站建设网站开发软件设计文档模板
  • 家庭网络建站庆云网站seo
  • 四川省商投建设公司官网365优化大师软件下载
  • 怎样建设那种游戏网站外贸网站建设平台有哪些
  • 做化验的网站台州市网站制作
  • 四川集团网站建设上海公司查名一网通
  • 无锡建设局评职称网站网站如何做的有气质
  • 半岛官方网站下载网站建设腾讯课堂
  • 国外设计网站怎么登陆建设体育用品网站分析
  • 兴华建设集团有限公司网站jsp电商网站开发流程
  • 山东省住房和城乡建设厅网站主页浙江省网站建设报价
  • 网站简约式布局特点女生学软件工程很难吗
  • 企业怎样建立自己的网站手机设计网
  • 做电商网站用什么系统省建设厅网站二建考试