Java在运行时识别对象和类信息有两种方式:一种是RTTI;另一种是反射机制。什么是RTTI?RTTI:(run-time type identification)运行时类型识别,当只有一个指向对象基类的引用时RTTI机制可以让你找到这个对象的确切概念。要理解RTTI的工作原理,必须先了解类信息是如何表示的,这个是由Class对象完成的,它完成了相关类的信息,Java使用Class对象来执行RTTI,即使你正在执行类似转型的这样操作,Class也有其他方式来执行该操作。每当编译一个Class类就有个Class对象,也就是说有个Class对象保存在.class文件当中,这个类对象是由JVM类加载器,所有的类都是在第一次使用时加载到内存当中,若程序创建一个静态的对象的引用时就会加载该类,类加载器并不是加载所有的字节码,是动态加载的。也就是为什么通过反射可以或许相关类的信息。
public class SwettShop {
public static void main(String args[]){
System.out.println("inside main.....");
new Cady();
System.out.println("after create Cady ....");
try {
Class.forName("com.dt.java.study.chart5.Gum");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
System.out.println("after create Gum ....");
new Cookie();
System.out.println("after create Cookie ....");
}
}
class Cady{
{
System.out.println("init Cady code ....");
}
static {
System.out.println("Loading Cady ......");
}
}
class Gum{
{
System.out.println("init Gum code ....");
}
static {
System.out.println("Loading Gum ......");
}
}
class Cookie{
static {
System.out.println("Loading Cookie ......");
}
}