码迷,mamicode.com
首页 > 编程语言 > 详细

Java反射

时间:2019-02-16 17:05:03      阅读:165      评论:0      收藏:0      [点我收藏+]

标签:obj   declared   tin   []   access   反射   创建对象   object   方法   

Java反射
对于程序来说,遵循六大原则,对于开发是非常必要的。而java的反射机制,从某种程度来说,是非常有利于六大原则,有利于程序的开发的,只有利用得当,会减少很多代码,解决很多问题。
Java反射就是在程序运行状态中,对于任意的类,对象都可以这个该类或者是对象的所有的信息。比如:对象的名称,对象的包名,对象的成员变量,对象的方法,对象的注解等等。也可以修改相应的属性的值。
进行反射,有如下步骤:
第一步,获取Class
对于实力来说,使用xxx.getClass()就可以获取Class对象了。如果是包名加类名的话,可以使用Class.forName(package+”.”+className)就可以获取Class对象了。如果是class的话,直接是xxx.class就可以了。获取类的注解getAnnotation(TestAnno.class);通过注解的类型获取注解。getAnnotations();获取所有的注解。获取父类getSuperclass();。获取接口getInterfaces();
第二步,获取成员变量
Class la = TestThread.class;
1、获取成员变量使用
la.getField("fieldName");通过成员名称来获取public字段
la.getFields();获取public所有成员字段
Field[] fi= la.getDeclaredFields();获取所有的字段
la.getDeclaredField("fieldName");通过字段名获取字段
2、获取成员变量的值和设置值
Object obj = la.newInstance();//创建对象
fi[0].setAccessible(true);如果是private或者是protected修饰的话,必须要设置这个为true
fi[0].get(obj);获取值
fi[0].set(obj, "value");设置值
3、获取字段的注解
fi[0].getAnnotation(TestAnno.class);通过注解的类型获取注解
Annotation[] anno = fi[0].getAnnotations();获取所有的注解

第三步获取方法
1、获取方法
la.getMethod("", String.class,String.class);通过方法名和参数获取public方法
la.getMethods();获取public所有方法
Method met = la.getDeclaredMethod("methodName", null);通过方法名和参数获取方法
la.getDeclaredMethods();获取所有的方法
2、调用方法和获取返回类型
met.setAccessible(true);如果方法是private,protected时,要设置这个为true
met.invoke(obj, null);调用方法
met.getReturnType();获取方法的返回值
3、获取注解
met.getAnnotation(TestAnno.class);通过注解类型获取注解
met.getAnnotations();获取所有的注解

Java反射

标签:obj   declared   tin   []   access   反射   创建对象   object   方法   

原文地址:http://blog.51cto.com/xiaoshunzi/2350906

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!