java 类型信息 笔记

来源:互联网 发布:白金数据神乐结局 编辑:程序博客网 时间:2024/06/05 14:07

RTTI : RTTI(Run-Time Type Information),通过运行时类型信息程序能够使用基类的指针或引用来检查这些指针或引用所指的对象的实际派生类型。

java 使用CLass对象来执行RTTI,即使正在使用转型的操作.
所有的类都是在第一次对其使用时,动态加载到jvm中,当创建第一个对类的静态成员引用时,类被加载.
这个证明构造器也是静态方法,只是没有static关键字.因此,new关键字创建的对象也会被当做对类的静态成员的引用.

Class.forName:返回与给定的字符串名称相关联类或接口的Class对象。
Class.forName是一个静态方法,同样可以用来加载类。如果类还没有被加载就进行加载同时初始化类信息.

forName这句话就是装载类用的(new是根据加载到内存中的类创建一个实例,要分清楚)。
Class的newInstance方法是实现”虚拟构造器”的一种方式.虚拟构造器允许你声明”我不知道你的类型,但是可以正确的创建你自己”.newInstance调用的是无参构造方法,没有则会报出异常.

java 类字面常量 : 例如 A.clalss 作用 : 生成对Class对象的引用.可以用于普通类还可以用于接口,数组,基本类型. 字面常量对Class对象的引用不会自动初始化Class对象.

类的加载三步骤 :
1.加载 : 类加载器加载.class文件,并通过字节码生成Class对象
2.链接 : 在链接阶段验证类中的字节码,为静态域分配存储空间,如果必须的话,解析这个类对其他类的所有引用
3.初始化 : 如果该类具有超类,则对其进行初始化,并且执行静态初始化器和静态初始化块.

在使用字面量常量时,如果一个值是static final”编译期常量”.不需要对改类初始化就可读取,如果只是static和final之一,会先初始化后进行读取.也就是说只是static不是final,那么对它的访问总是先链接,初始化该类再后才能读取.
所以字符串常量应该尽量写成static final

Class引用总是指向某一个Class对象,它可以制作类的实例,并包含可作用于该实例的所有方法代码,包括静态成员.
Class引用表示的就是它所指向的对象的确切类型,而该对象便是Class类的一个对象.

Class<?>由于Class,几遍他们是等价的.Class<?>可以帮助进行类型检查。

Class.cast()用于类型转换 :
参数为要转型的对象,并 将其转为Class的引用类型
示例 :

class A {}class B extends A {}A a = new A();CLass<B> classB = B.Class;B b = classB.cast(a);
原创粉丝点击