RTTI:运行时类型识别
运行时类型识别使得你可以在程序运行时发现和使用类型信息
在java中,主要有两种方式可以在运行时识别对象和类的信息的:
1.传统的RTTI;
2.反射机制;
RTTI 和反射之间的区别:
对RTTI来说,编译器在编译时打开和检查.class文件;
而对于反射机制来说,.class文件在编译时是不可获取的,所以是在运行时打开和检查.class文件
类是程序的一部分,每个类都有一个class对象。
类加载器:加载类的类型信息
所有的类都是在对其第一次使用时,动态加载到JVM中的,当程序创建第一个对类的静态成员的引用时,就会加载这个类。
也就是说,Java程序在它运行的时候,并不是被完全加载,而是必需时才加载的。
JAVA SE5 提供了用于Class引用的转型语法,即cast()方法,该方法接收参数对象,并将其转型为Class引用的类型。
在java中,可以使用instanceof来判断是否是某特定类型的实例
接口可以隔里构件,进而降低耦合性。
问题:
反射在java中是用来支持其他特性的?
代理是基本的设计模式之一,它是你为了提供额外的或不同的操作,而插入的用来代替“实际”对象的对象。?
java的动态代理?
标记接口?
RTTI允许通过匿名基类的引用来发现类型信息,初学者极易误用?