RTTI:运行时类型识别

参考链接: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;
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值