標籤:adc size 反射 for 記憶體 pre .class 泛型 產生
一丶Class的理解
/* * Class類是反射的源頭 * 建立一個類,通過編譯(javac.exe),產生對應的.class檔案,之後使用java.exe載入(JVM的類載入器完成的)此.class檔案。 * 此.class檔案載入到記憶體後,就是一個運行時類,存放在緩衝區。 * 那麼這個運行時類本身就是一個Class的執行個體。 * 1.每一個運行時類只載入一次; * 2.有了Class的執行個體後,可以進行如下操作: * 1>建立對應的運行時類的對象 * 2>擷取對應的運行類的完整結構(屬性、方法、構造器、內部類、父類、所在的包、異常、註解、...) * 3>調用對應的運行時類指定的結構(屬性、方法、構造器) * 4>反射的應用:動態代理 */
一丶獲得Class對象的方法
1)通過類的靜態屬性class獲得
Class clazz = Person.class;
2)通過運行時類的getClass方法獲得
Person person = new Person(); Class clazz = person.getClass();
3)通過Class的靜態方法獲得
String className = "hello.Person";//運行時類的完全限定名 Class clazz = Class.forName(className);
4)通過類的載入器獲得(瞭解)
String className = "hello.Person";//類的完全限定名 ClassLoader classLoader = this.getClass().getClassLoader(); Class clazz = classLoader.loadClass(className);
二丶通過Class對象建立對應的運行時類的執行個體對象
Class clazz = Person.class;//沒有使用泛型,預設是object類型的class對象 Person person = (Person) clazz.newInstance(); //需要強轉,該方法預設調用運行時類的無參構造方法,所以類必須有無參構造方法,無參構造方法許可權夠大 Class<Person> clazz1 = Person.class;//使用了泛型指定是Person類型的class對象 Person person1 = clazz1.newInstance();//不需要強轉
java反射專題一