java编程思想概括(第十章)类型检查

类型检查

运行期类型识别(RTTIrun-time type identification

在运行期识别对象和类的信息1)(传统的)在编译器和运行期已经知道了所有的类型;2)“反射机制reflection”,在运行期获得类的信息。

1. class对象:它包含了与类有关的信息。Java程序并不是一开始执行,就完全加载的。与许多传统语言都不同。一旦某个类的Class对象被载入内存,它就被用来创建这个类的所有对象(class.forName)。

2. 类字面常量(Class literal):生成Class对象的引用(.class的形式)不仅可以应用于普通的类,也可以用于接口、数组以及基本数据类型,以外,对于基本数据类型的包装类,还有一个标准域TYPE,(是个引用,指向对应的基本数据类型的Class对象)。

3. 类型转换前先作检查:instanceof,返回布尔值,告诉我们对象是不是某个特定类型的实例。使用Class.newInstance()调用无参构造器生成新的对象。

4. 使用类字面常量:从Class对象获取类型名称。

5. 动态的instanceof:Class.isInstance方法提供了一种动态地调用instanceof运算符的途径。

6. 等价性:instanceof vs .class,与直接比较Class对象有一个很重要的差别。Instanceof保持了类型的概念,==比较实际的Class对象。

7. RTTI语法:通过使用Class对象,我们可以找出一个对象的任何信息。Class.getInterfaces()方法返回Class对象的数组。

8. 反射(Reflection):运行期的类信息:在编译期,编译器必须知道你要通过RTTI来处理的所有类。通过检查可用的方法,并返回方法名。对于RTTI来说,编译器在编译期打开和检查.class文件。而对于反射机制来说.class文件在编译期间是不可获取的,所以是在运行期打开和检查.class文件。

9. 类方法提取器:ClassgetMethods()getConstructors()方法分别返回Method数组和Constructor数组。

 

 

 

——————————如果不豁出性命的话,也是无法开创未来的。
原文地址:https://www.cnblogs.com/thirller/p/2940536.html