RTTI

作者: kill_ec94 | 来源:发表于2019-08-28 21:34 被阅读0次

    RTTI:run time type identification,运行时类型识别;

    首先这个是个啥东西,其实就是字面意思,在运行期间获取类型的信息。

    那么运行时类型确认,究竟有什么作用呢?

    书上说主要是四个方面:

    1.传统的类型转换:

    比如(Integer) aaa,类似这种类型转换,那么RTTI就是确保了类型转换的正确性,如果说有错误的话,那么就会直接抛出一个ClassCastException异常;

    2.获取代表对象类型的Class对象:

    首先来看最基本的class对象,类型信息在运行时就是通过Class对象所表示的,我们来看下这个对象的方法,

    是的Class也是Object对象,它有几个非常经典的方法:

    forName();

    newInstance();

    getFileds();

    getMethods();

    看出来了吧,如果想在程序运行的时候,获取到某个类的一些相关信息。这个时候它就可以派上用场,举个简单的例子,如果你拿到了某个类,想获取这个类下面的所有方法,就可以利用Class对象提供的方法去做这个事情;

    3.Instance of

    这个是另一种表现形式,就是用对象的实例instance of 类对象,来判断是否是某个类的实例,如果是的话,就可以强制转换,这个虽然确实挺有用的,但是觉得和前两种比起来稍显得有些不足;

    4.还有就是利用泛型对 Class 对象进行类型限定

    举个例子

    Class<Integer> intClass = int.class; // legal

    intClass = double.class; // illegal

    通过泛型的方式可以对这个类做更加严格的限制,但是我自己觉得这个其实是在编译期做的事情,谈不上运行时的概念。

    相关文章

      网友评论

          本文标题:RTTI

          本文链接:https://www.haomeiwen.com/subject/rnrvectx.html