-
运行时类型信息使得你可以在程序运行时发现和使用类型信息。Java中有两种方式可以在运行时识别对象和类的信息的,一个是RTTI,它假定在编译时已经知道了所有的类型;另一种就是反射。
-
RTTI即多态中在执行期间对一个对象的类型进行识别。使用Class对象来执行其RTTI,Class对象包含与类有关的信息。实际上,
Class对象就是用来创建类的所有的'常规'对象的。
。一个类对应一个Class对象,生成对象时,JVM会使用类加载器模块。其可以包含一条类加载器链,但是只有一个原生类加载器。原生类加载器加载的是可信类,包括JavaAPI类,常常从本地盘加载。若想要例如在Web服务器应用中或者网络下载类,可以挂接额外的类加载器。 -
当第一次使用某类的静态成员(包括构造器),会发生加载类行为。类加载器先检查类的Class对象是否已加载,未加载则用类名找 .class 文件,例如某个附加类加载器可能在数据库找字节码。载入后先校验正确性和安全性(检查不良代码!)。若Class对象已经加载,则可以用来创建对象了。
-
Class类是所有Class对象的父类,他有个静态方法叫
forName()
,接受一个类名返回Class对象引用。他可以动态加载指定类名。使用Class类即可以操作类加载器的工作。