Java反射建立類物件的三種實現方法
阿新 • • 發佈:2019-02-12
public class Main { public static void main(String[] args) { //Foo的例項物件建立 Foo foo = new Foo("abcdefgh"); //Class類的例項物件 //任何一個類都是Class的例項物件,這個例項物件有三種表示方式 //第一種表示方式----》 實際在告訴我們任何一個類都有一個靜態成員方法 Class c1 = Foo.class; //第二種表示方式 已經知道該類的物件通過gtClass方法 Class c2 = foo.getClass(); //c1,c2表示了Foo類的類型別(class type) /**萬事萬物皆是物件, * 類也是物件,是class類的例項物件 * 這個物件我們稱為該類的類型別 * */ //c1 or c2 都代表了Foo類的類型別 ,一個類只能是Class類的物件 System.out.println(c1==c2); //第三種方式 Class c3 = null; try { c3 = Class.forName("Foo"); } catch(ClassNotFoundException e) { e.printStackTrace(); } System.out.println(c2==c3); try { Foo foo1=(Foo) c1.newInstance(); // 需要無參的構造方法 foo1.print(); } catch (InstantiationException e) { e.printStackTrace(); } catch (IllegalAccessExceptione) { e.printStackTrace(); } } //我們完全通過類的類型別建立該類的物件例項---> 通過c1 or c2 or c3 } class Foo{ void print(){ System.out.println("Foo"); } Foo(String a){ } Foo(){ } }