参考链接:https://www.cnblogs.com/JohnTsai/p/4821287.html
在《Java编程思想》一书中,学习泛型的时候提到了一个很重要的点,称之为RTTI,即运行时类型识别
经过自己的查阅,稍微有一点理解,整理备忘。
1、什么是RTTI
Java在运行时识别对象和类的信息的方式:
(1)一种是RTTI,它假定我们在编译时已经知道了所有的类型。
(2)另一种是反射机制,它允许我们在运行时发现和使用类的信息。
运行时类型识别(RTTI, Run-Time Type Identification)
是Java中非常有用的机制,在Java运行时,RTTI维护类的相关信息。
多态(polymorphism)是基于RTTI实现的。
RTTI的功能主要是由Class类实现的。
应用场景
/**
* Java中每个对象都有相应的Class类对象
* 因此,我们随时能通过Class对象知道某个对象“真正”所属的类。
* 无论我们对引用进行怎样的类型转换,对象本身所对应的Class对象都是同一个。
* 当我们通过某个引用调用方法时,Java总能找到正确的Class类中所定义的方法,并执行该Class类中的代码。
* 由于Class对象的存在,Java不会因为类型的向上转换而迷失。这就是多态的原理。
*
* @version 1.0 created by Justmemoryl on 2018/11/14 9:37
*/
public class RTTIDemo {
public static void main(String[] args) {
Human aPerson = new Human();
Class c1 = aPerson.getClass();
System.out.println(c1.getName());
// 向上转型,由父类接收子类对象
Human anotherPerson = new Woman();
Class c2 = anotherPerson.getClass();
System.out.println(c2.getName());
}
}
class Human {}
class Woman extends Human {}
2、获取Class对象的三种方法
静态方法:Class.forName(String path);
通过对象获取:obj.getClass();
类字面常量:Object.class;