美文网首页
十四章-类型信息

十四章-类型信息

作者: 木书 | 来源:发表于2017-08-15 17:32 被阅读26次

    一、在java中识别运行时对象和类的信息的两种方式:

    1.RTTI,它假定我们自编译时已经知道了所有的类型;

    2.反射机制,它允许我们在运行时发现和使用类的信息。

    二、Class对象

    1.Class对象就是用来创建类的所有的“常规”对象的。

    2.为了生成Class对象,虚拟机将使用被称为“类加载器”的子系统。

    3.生成Class对象的引用的两种方式:

    #Class.forName();

    #使用类字面常量:XX.class(基本数据类型的包装器类还可以使用XX.TYPE,编程思想建议都使用XX.class,以保持一致性)

    二者区别:使用.class来创建对Class对象的引用时,不会自动地初始化该Class对象,初始化被延迟到了对静态方法(构造器隐式地是静态的)或者非常数静态域进行首次引用时才执行。

    4.为了在使用泛化的Class引用时放松限制,可以使用通配符。

    通配符就是"?",表示任何事物。

    再此之上加点限制就是,Class表示T的父类,Class表示T的子类。

    三、RTTI形式

    #传统的类型转换(Shape),可能会抛出异常。

    #Class对象

    #关键字instanceof

    如下,进行向下转型前,如果不知道这个对象什么类型,使用instanceof很重要,否则可能会得到一个ClassCastException异常。

    Class.isInstance()方法使我们不在需要instanceof表达式

    isAssignableFrom:判定此Class对象所表示的类或接口与指定的Class参数所表示的类或接口是否相同,或是否是其超类或超接口。如果是则返回true,否则返回false。如果该Class表示一个基本类型,且指定的Class参数正是该Class对象,则该方法返回true,否则返回false。

    四、关于反射

    Class的getMethod()和getConstructors()方法分别返回Method对象的数组和Constructor对象的数组。

    五、动态代理

    Java的动态代理实际上就是在一般的代理模式上实现了InvocationHandler接口

    相关文章

      网友评论

          本文标题:十四章-类型信息

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