Thinking in Java 中尚未引入泛型概念
RTTI - run-time type identification
1. 每當(dāng)編寫并且編譯了一個(gè)新類,就會(huì)產(chǎn)生一個(gè)Class對(duì)象(更恰當(dāng)?shù)恼f,是被保存在一個(gè)同名的.class文件中)
2. Class類的一些方法(*表示會(huì)拋出異常):
* static forName(String) 返回相應(yīng)的Class類,注意字符串里要加上包名
* newInstance() 返回對(duì)應(yīng)于該Class類的類的實(shí)例,注意該類必須有一個(gè)缺省構(gòu)造器。
isInstance(Object) 返回該對(duì)象是否是Class類對(duì)應(yīng)的類的實(shí)例(或子類)
getSuperClass() 返回直接父類的Class類
* getConstructors() 返回構(gòu)造器,返回值是Constructor[]
* getFields() 返回字段,返回值是Field[]
* getMethods() 返回字段,返回值是Method[]
3. 類字面常量 (Class literals)
例如要獲得Gum類的Class類就使用Gum.class
對(duì)于基本數(shù)據(jù)類型的wrapper類,還有一個(gè)標(biāo)準(zhǔn)字段TYPE,int.class和Integer.TYPE返回值一樣,建議使用.class以保持一致。
4. Java希望我們始終使用多態(tài)機(jī)制,只在必需的時(shí)候使用RTTI。