反射機制的做用: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反射機制詳細分析