Class 和 class,反射,泛型

1.class 是java裏面聲明一個類時的關鍵字

2.Class 是java類庫中的一個類

Java程序在運行時,Java運行時系統一直對所有的對象進行所謂的運行時類型標識。這項信息紀錄了每個對象所屬的類。虛擬機通常使用運行時類型信息選準正確方法去執行,用來保存這些類型信息的類是Class類。Class類封裝一個對象和接口運行時的狀態,當裝載類時,Class類型的對象自動創建。

Class 沒有公共構造方法。Class 對象是在加載類時由 Java 虛擬機以及通過調用類加載器中的 defineClass 方法自動構造的,因此不能顯式地聲明一個Class對象。

虛擬機爲每種類型管理一個獨一無二的Class對象。也就是說,每個類(型)都有一個Class對象。運行程序時,Java虛擬機(JVM)首先檢查是否所要加載的類對應的Class對象是否已經加載。如果沒有加載,JVM就會根據類名查找.class文件,並將其Class對象載入。


Test test1 = new Test();
Test test2 = new Test();
Class class1 = test1.getClass();
Class class2 = test2.getClass();
Class class3 = Test.class;
System.out.println("-------------------++");
System.out.println(class1 == class2);
System.out.println(class1 == class3);

//運行的結果爲:
//true
//true
//說明..每個類一加載時jvm都會自動爲該類生成一個Class對象


基本的 Java 類型(boolean、byte、char、short、int、long、float 和 double)和關鍵字 void 也都對應一個 Class 對象。

每個數組屬於被映射爲 Class 對象的一個類,所有具有相同元素類型和維數的數組都共享該 Class 對象。

關於Class,泛型,以及反射機制請參看:
[url]http://www.iteye.com/topic/220264[/url]
[color=red]
泛型是在 Java 平臺上作爲編譯時轉換實現的。編譯器實際上生成與使用非泛型源代碼時相同的字節指令,插入運行時類型轉換以在每次訪問時將值轉換爲正確的類型。儘管是相同的字節碼,但是類型參數信息用 一個新的簽名(signature) 屬性記錄在類模式中。JVM 在裝載類時記錄這個簽名信息,並在運行時通過反射使它可用。[/color]
[url]http://www.ibm.com/developerworks/cn/java/j-cwt11085.html[/url]

you can reference this url:
http://gaoruibof117and.blog.163.com/blog/static/1336014200763085540272/
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章