獲取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>中