你好,歡迎來到IOS教程網

 Ios教程網 >> IOS訊息 >> 關於IOS >> Java反射

Java反射

編輯:關於IOS

Java的反射非常強大,傳遞class, 可以動態的生成該類、取得這個類的所有信息,包括裡面的屬性、方法以及構造函數等,甚至可以取得其父類或父接口裡面的內容。

  Java 反射機制主要提供了以下功能:   在運行時判斷任意一個對象所屬的類; 在運行時構造任意一個類的對象; 在運行時判斷任意一個類所具有的成員變量和方法; 在運行時調用任意一個對象的方法; 生成動態代理。 在 JDK 中,主要由以下類來實現Java 反射機制,這些類都位於java.lang.reflect包中。   Class類:代表一個類。 Field類:代表類的成員變量(成員變量也稱為類的屬性)。 Method類:代表類的方法。 Constructor 類:代表類的構造方法。 Array類:提供了動態創建數組,以及訪問數組元素的靜態方法。 反射                                                                                              復制代碼 public class ClassDemo {     public static void main(String[] args) throws Exception {         // 1111111111111111111111111111111111111         Person person1 = new Person();         Class c1 = person1.getClass();         Person person2 = new Person();         Class c2 = person2.getClass();         System.out.println(c1 == c2);         System.out.println("============================");         // 222222222222222222222222222         Class c3 = Person.class;         System.out.println(c1 == c3);         System.out.println("============================");         // 33333333333333333333333333333333         Class c4 = Class.forName("com.yydcdut.Reflaction.Person");         System.out.println(c1 == c4);         Constructor co = c4.getConstructor(null);         Object obj = co.newInstance(null);         Method m = c4.getMethod("show", null);         m.invoke(obj, null);         System.out.println("============================");     } } 復制代碼 Perosn類:   復制代碼 public class Person {          public void show()     {         System.out.println("Person--->show");     }   } 復制代碼 應為項目中只有一個person.class文件,所以以反射獲取的到對象都是一樣的。   項目中的一種用法                                                                            復制代碼 package com.yydcdut.test;   public class LiSi {     public void show(){         System.out.println("LiSi--->show");     } } 復制代碼 復制代碼 package com.yydcdut.test;   public class ZhangSan {     public void show(){         System.out.println("zhangsan--->show");     } } 復制代碼 在項目中創建一個文件,who.txt,內容:   whoName=com.yydcdut.test.ZhangSan methodName=show 主類中:   復制代碼 public class MainTest {       public static void main(String[] args) throws Exception {         Properties prop = new Properties();         FileReader fr = new FileReader("who.txt");         prop.load(fr);         fr.close();           String whoName = prop.getProperty("whoName");         String methodName = prop.getProperty("methodName");         // 獲得對象的類型         Class c = Class.forName(whoName);         // 通過默認構造方法創建一個新的對象         Constructor co = c.getConstructor(null);         Object obj = co.newInstance();         // 獲得對象的方法         Method m = c.getMethod(methodName, null);         // 調用對象的方法         m.invoke(obj, null);     } } 復制代碼 通過這樣,只需要改文件中的內容,代碼中就會自動獲取該獲取的內容。
  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved