導語:java中的Class類物件是可以人工自然性的得到的,下面是相關介紹,歡迎參考!
獲取Class物件有三種方式:
1.通過Object類的getClass()方法。例如:
Class c1 = new String("")lass();
2.通過Class類的靜態方法——forName()來實現:
Class c2 = ame("MyObject");
3.如果T是一個已定義的型別的話,在java中,它的s檔名:s就代表了與其匹配的Class物件,例如:
Class c3 = s;
Class c4 = s;
Class c5 = Double[]s;
這裡需要解釋一下3:請記住一句話,java中,一切皆物件。也就是說,基本型別int float 等也會在jvm的記憶體池像其他型別一樣中生成一個Class物件。而陣列等組合型資料型別也是會生成一個Class物件的,而且更令人驚訝的是,java中陣列的本來面目其實就是某個類,驚訝中的驚訝是,含有相同元素的相同維數的陣列還會共同享用同一個Class物件!其實根據我的臆想,陣列的length性質應該就儲存在這個Class物件裡面。
Class類中存在以下幾個重要的方法:
ame()
一個Class物件描述了一個特定類的特定屬性,而這個方法就是返回String形式的該類的簡要描述。由於歷史原因,對陣列的Class物件呼叫該方法會產生奇怪的結果。
nstance()
該方法可以根據某個Class物件產生其對應類的.例項。需要強調的是,它呼叫的是此類的預設構造方法。例如:
MyObject x = new MyObject();
MyObject y = lass()nstance();
lassLoader()
返回該Class物件對應的類的類載入器。
omponentType()
該方法針對陣列物件的Class物件,可以得到該陣列的組成元素所對應物件的Class物件。例如:
int[] ints = new int[]{1,2,3};
Class class1 = lass();
Class class2 = omponentType();
而這裡得到的class2物件所對應的就應該是int這個基本型別的Class物件。
uperClass()
返回某子類所對應的直接父類所對應的Class物件。
ray()
判定此Class物件所對應的是否是一個數組物件。