Thinking in Java 中尚未引入泛型概念
RTTI - run-time type identification
1. 每当编写并且编译了一个新类,就会产生一个Class对象(更恰当的说,是被保存在一个同名的.class文件中)
2. Class类的一些方法(*表示会抛出异常):
* static forName(String) 返回相应的Class类,注意字符串里要加上包名
* newInstance() 返回对应于该Class类的类的实例,注意该类必须有一个缺省构造器。
isInstance(Object) 返回该对象是否是Class类对应的类的实例(或子类)
getSuperClass() 返回直接父类的Class类
* getConstructors() 返回构造器,返回值是Constructor[]
* getFields() 返回字段,返回值是Field[]
* getMethods() 返回字段,返回值是Method[]
3. 类字面常量 (Class literals)
例如要获得Gum类的Class类就使用Gum.class
对于基本数据类型的wrapper类,还有一个标准字段TYPE,int.class和Integer.TYPE返回值一样,建议使用.class以保持一致。
4. Java希望我们始终使用多态机制,只在必需的时候使用RTTI。