首先是运行时类型识别的例子:
package Pack1;
public class Sandbox1
{
public static void main(String args[])
{
Car myCar = new Car();
Class c1 = myCar.getClass();
System.out.println(c1.getName());
System.out.println(c1.getPackage());
System.out.println(c1.getFields());
System.out.println(c1.getMethods());
}
}
class Car
{
private int m_speed;
public int getM_speed() {
return m_speed;
}
public void setM_speed(int m_speed) {
this.m_speed = m_speed;
}
}
输出结果如下:
Pack1.Car
package Pack1
[Ljava.lang.reflect.Field;@133c5982
[Ljava.lang.reflect.Method;@24c21495
下面探讨其具体实现过程:
class类是java语言定义的,在java.lang包中。
所有java类都会继承object类。在object类中存在getclass这一方法,用来取得对已经实例化class对象的引用。class类的构造函数是private,所以我们无法自己创建Class类的对象。当类被调入时,java虚拟器会自动创建class对象。
相关资料可以参考:http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Class.html