反射机制的做用:java
1,反编译:.class-->.java安全
2,经过反射机制访问java对象的属性,方法,构造方法等;.net
一、Java提供了以下四个反射机制的类:对象
java.lang.Class; blog
java.lang.reflect.Constructor; java.lang.reflect.Field; get
java.lang.reflect.Method;编译
java.lang.reflect.Modifier;class
二、理解类型与对象的概念:object
Class 表示Java的类型,例子以下,三种获取Java类型的方法,获取User的类型:技巧
(1)、Class clz = Class.forName(“User”);
(2)、Class clz = User.class;
(3)、User user = new User();
Class clz = user.getClass();
获取类型以后,经过类型来建立对象实例,利用newInstance()
Object object = clz.newInstance();
三、获取属性:分为获取全部属性和获取指定的属性
反射机制能够打破封装性,便可将不可访问域修改为可访问域,这样会形成Java属性不安全
四、获取方法和构造方法
五、经过invoke来调用Class 的方法:
Method method = clz.getDeclaredMethod("setAge",Integer.class);
method.invoke(clz.newInstance(),15);
若是是静态方法的反射,则不用newInstance();
六、经过fild的set方法设置值
Field field = cls.getDeclaredField("age");
field.setAccessible(true);//设置容许访问
field.set(student, 10);
参考:http://blog.csdn.net/liujiahan629629/article/details/18013523 Java反射机制概念讲解
参考:http://blog.csdn.net/ichsonx/article/details/9108173 Java反射机制的小技巧
参考:http://blog.csdn.net/ichsonx/article/details/9081351 Java反射机制详细分析