天天看點

Java反射機制-Class類

Java,是面向對象的 什麼是對象,大家立刻就想到類(class)。Integer,String,Double,Void.....都是類的對象。那麼, 類又是誰的對象呢??》 類,是java.lang.Class類的執行個體對象 我們具體點解釋 我們建立一個類 Car class car {} 接着我們建立一個Car的執行個體對象,大家都知道,直接new Car()即可。 Car car1 = new Car(); car1 是Car的執行個體對象,那麼Car又是誰的執行個體對象? 是Class 那麼Class,它的執行個體對象該如何表示呢??還能不能new Class() ? 我們打開源碼

Java反射機制-Class類

可以看到,Class它的構造方法是私有的,而且注釋說的很明确,Only the java virtual machine..隻有java虛拟機能直接建立它。是以,我們不能new 了。

這個Class , 它的執行個體對象有3種表示方法。 第一種: 直接使用位元組碼的形式 Class c1 = Car.class; ps: 可以看出,任何一個類,都有一個靜态的class對象,對吧?? 第二種: 通過已知的類對象的getClass()方法來執行個體化 Class c2 = car.getClass(); 在說第三種前,回頭看下,car 是Car的執行個體對象,c1,c2又表示Car,在官網裡,c1,c2 被說成為 class type, 中文即是 類類型。 第三種: 通過類路徑的形式擷取(需要捕獲異常) Class c3 = null; try { c3 = Class.forName("reflect.initClass.Car"); } catch (ClassNotFoundException e) { e.printStackTrace(); } 這裡,c1 c2 c3 是否相等??? System.out.println(c1 == c2); System.out.println(c2 == c3); 會發現,都是true,也說明, 一個類,隻可能有一個類類型 上面我們建立一個類執行個體對象,是直接new,現在,有了類類型,我們有了第二種方式(newInstance): Car car2 = (Car) c1.newInstance(); // 完全沒問題 以上就是java反射中,Class 類的具體解釋,簡單····

接下來将介紹 如何通過反射去動态加載類

資源已上傳:http://download.csdn.net/detail/jaky0306/9762046

繼續閱讀