1. 程式人生 > >Java反射建立類物件的三種實現方法

Java反射建立類物件的三種實現方法

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 (IllegalAccessException
e) { e.printStackTrace(); } } //我們完全通過類的類型別建立該類的物件例項---> 通過c1 or c2 or c3 } class Foo{ void print(){ System.out.println("Foo"); } Foo(String a){ } Foo(){ } }