面向對象的世界里,萬事萬物皆對象。
1)類是誰的對象呢?
類是對象,類是java.lang.Class類的實例對象。
2)這個對象如何表示呢?
package com.reflect;public class ClassDemo1 {public static void main(String[] args) {//Foo的對象如何表示Foo foo1=new Foo();//f001就表示出來了//Foo這個類,也是一共實例對象,Class類的實例對象,如何表示呢?//任何一共類都是Class類的實例對象,這個實例對象有三種表示方式//第一種表示方式--》實際告訴我們,任何一共類都有一個隱含的靜態成員變量classClass c1=Foo.class;//第二種表達方式 已知該類的對象,通過getClass方法Class c2=foo1.getClass();//官網c1,c2表示了Foo類的類類型(class type)//萬事萬物皆對象,//類也是對象,是Class類的實例對象,//這個對象我們稱為類的類類型//不管c1 還是 c2 都代表了Foo類的類類型,一共類只可能是Class類的一共實例對象System.out.println(c1==c2);//第三種表達方式Class c3=null;try {c3=Class.forName("com.reflect.Foo");} catch (ClassNotFoundException e) {e.printStackTrace();}System.out.println(c2==c3);//我們完全可以通過類的類類型創建該類的實例對象-->,通過c1或c2或c3創建Foo的實例try {Foo foo2=(Foo)c1.newInstance(); //需要有無參數的構造方法 foo2.print();} catch (InstantiationException e) {e.printStackTrace();} catch (IllegalAccessException e) {e.printStackTrace();}}} class Foo{void print(){} }
?