Java反射的三種實現方式
阿新 • • 發佈:2019-02-12
1 |
Foo foo = new
Foo();
|
第一種:通過Object類的getClass方法
1 |
Class cla = foo.getClass();
|
第二種:通過物件例項方法獲取物件
1 |
Class cla = foo. class ;
|
第三種:通過Class.forName方式
1 |
Class cla = Class.forName( "xx.xx.Foo" );
|
對於有空建構函式的類 可以直接用位元組碼檔案獲取例項:
1 |
Object o = clazz.newInstance(); // 會呼叫空參構造器 如果沒有則會報錯 |
對於沒有空的建構函式的類則需要先獲取到他的構造物件 在通過該構造方法類獲取例項:
1 2 3 |
Constroctor constroctor = clazz.getConstructor(String. class , int . class );
// 獲取建構函式
Object obj = constroctor.newInstance( "jack" ,
18 ); // 通過構造器物件的newInstance方法進行物件的初始化
|