反射的原理,反射建立類例項的三種方式是什麼?
阿新 • • 發佈:2018-12-12
反射機制:
所謂的反射機制就是java語言在執行時擁有一項自觀的能力。通過這種能力可以徹底的瞭解自身的情況為下一步的動作做準備。下面具體介紹一下java的反射機制。這裡你將顛覆原來對java的理解。 Java的反射機制的實現要藉助於4個類:class,Constructor,Field,Method;其中class代表的時類對 象,Constructor-類的構造器物件,Field-類的屬性物件,Method-類的方法物件。通過這四個物件我們可以粗略的看到一個類的各個組 成部分。
Java反射之類的例項物件的三種表示方式
public class ClassDemo1 { public static void main(String[] args) { //Foo的例項物件如何表示 Foo foo1 = new Foo();//foo1就表示出來了 //Foo這個類,也是一個例項物件,Class類的例項物件,如何表示呢、 //任何一個類都是Class的例項物件,這個例項物件那個有三個表示方式 //第一種表示方式--》實際在告訴我們任何一個類都有一個隱含的靜態成員變數class Class class1 = Foo.class; //第二種表示方式 已經知道該類的物件通過getClass方法 Class class2 = foo1.getClass(); /* * 官網class1 ,class2表示了Foo類的類型別(class type) * 萬事萬物 都是物件 * 類也是物件,是Class類的例項物件 * 這個物件我們稱為該類的類型別 */ //不管class1 or class2都代表了Foo類的類型別,一個類只可能是Class;類的一個例項物件 System.out.println(class1==class2);//true' //第三種表達方式 Class class3 = null; try { class3 = Class.forName("com.imooc.reflect.Foo"); } catch (ClassNotFoundException e) { e.printStackTrace(); } // System.out.println(class2==class3);//true //我們完全尅通過類的類型別建立該類的物件例項--》通過class1 or class2 or class3 //建立Foo類的例項物件 try { //需要有無引數的構造方法 Foo foo = (Foo) class1.newInstance();//需要強轉 foo.print(); } catch (Exception e) { e.printStackTrace(); } } } // class Foo{ public void print(){ System.out.println("foo"); } }