反射機制的基本用法
一、反射機制的最大特點:
- 可以在不匯入(import)包到程式碼裡的前提下使用依賴類。
二、反射機制的功能:
- 已知一個例項物件
- 獲得該例項物件的本類及父類的指定或全部資訊
- 類:類名、父類名、包名等。
- 方法:方法名、方法修飾符列表、返回值型別、引數列表
- 成員屬性:屬性型別、屬性名稱
- 獲得該例項物件的本類及父類的指定或全部資訊
三、例項:
String className = "com.leon.java.reflect.Person";
---->1.得到該字串所指代類的Class物件
Class<?> cls = Class.forName(className);
---->2.通過該類的Class物件,得到父類Class物件
Class<?> superclass = cls.getSuperclass();
---->3.通過該類的Class物件,得到父介面Class物件
Class<?>[] clazz = cls.getInterfaces();
---->4.通過該類的Class物件,得到該類的構造方法,並例項化物件
Object obj = cls.getConstructor().newInstance();
---->5.通過該類的Class物件,得到該類的普通方法
String setMethodName = "setName";
Method method = cls.getDeclaredMethod(setMethodName, String.class);
---->6.通過該類的例項化物件,使用該方法
method.invoke(obj,value);// 等價於:Person物件.setName(value);
String getMethodName = "getName";
Method getMethod = cls.getDeclaredMethod(getMethodName);//getter沒有輸出
System.out.println(getMethod.invoke(obj));
---->7.通過該類的例項化物件,獲取並修改該類的屬性
Field name = cls.getDeclaredField("name");
name.setAccessible(true);//解除封裝,否則會訪問不了,報錯:java.lang.IllegalAccessException
name.set(obj,"小屁孩");
四、類關係圖:五、例項關係圖:
相關文章
- Java反射和註解基本用法Java反射
- Java的反射機制Java反射
- Java反射機制Java反射
- Java 中的 反射機制Java反射
- Go反射機制ReflectGo反射
- 反射機制 小小談反射
- Java核心反射機制Java反射
- java利器——反射機制Java反射
- php 反射機制案例PHP反射
- Java反射機制(轉)Java反射
- Java反射機制研究Java反射
- Java中的類反射機制Java反射
- 反射機制的簡答理解反射
- 淺析java的反射機制Java反射
- JAVA的反射機制==>用反射分析類的實現Java反射
- java反射機制的學習心得Java反射
- 關於Java中的反射機制Java反射
- Java 反射機制的三種方式Java反射
- java中的反射機制淺析Java反射
- 工廠模式-PHP的反射機制模式PHP反射
- JAVA中的反射機制詳解Java反射
- Java反射機制那些事Java反射
- android中反射機制Android反射
- 反射機制及應用反射
- Java反射機制簡答Java反射
- 說說 Java 反射機制Java反射
- JAVA(五)反射機制/AnnotationJava反射
- Java 反射機制分析指南Java反射
- Java 反射機制詳解Java反射
- 第17章_反射機制反射
- 淺談Java的反射機制和作用Java反射
- 詳解 php 反射機制原理PHP反射
- Java筆記-反射機制(一)Java筆記反射
- 類載入機制與反射反射
- java進階(41)--反射機制Java反射
- 【C#】:淺談反射機制C#反射
- Java註解與反射機制Java反射
- 這就是所謂的OC的反射機制反射