Java反射

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();獲取所有的註解

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章