java 反射機制與動態加載類學習要點

獲取Class類的對象:

假設Foo是一個類,Foo foo = new Foo();則

第一種:Class c1 = Foo.class;

第二種:Class c2 = foo.getClass();

第三種:Class c3 = Class.forName("com.nudt.reflection.Foo"); //會拋出異常

此時  c1 == c2 == c3 爲true


也可以通過c1\c2\c3創建Foo的實例:

Foo foo = (Foo)c1.newInstance();  //前提:Foo具有無參數的構造方法


動態加載類(運行時加載類):

Class c = Class.forName(類全稱);

(Animal) a = (Animal)c.newInstance();

其中Animal是個接口,運行時要加載的類繼承該接口,並且創建自己的無參數構造方法


獲取某個方法對象:

方法的反射操作:

method.invoke()


java中集合的泛型是防止錯誤輸入的,在編譯之後,就沒有泛型存在了

可以通過方法的反射來繞過編譯,講int放入List<String>中

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