美文网首页
8 反射00

8 反射00

作者: 一枝妖孽 | 来源:发表于2018-06-10 21:20 被阅读0次

    1 编译时 vs 运行时

    编译时:将Java代码编译成.class文件的过程【只涉及纠正我们的语法正确与否,不涉及运行时,不牵扯内存】
    运行时:就是Java虚拟机执行.class文件的过程【肯定会用在内存调用】

    1、编译时类型和运行时类型
    编译时类型:编译时类型由声明该变量时使用的类型决定
    运行时类型:运行时类型由实际赋给该变量的对象决定
    Animal animal =new Dog();

    2、动态绑定:调用引用实例的方法
    1)在编译时,是调用声明类型的成员方法(多态的实现原理),也就是所谓的编译时类型的方法
    2)到了运行时,调用的是实际的类型的成员方法,也就是所谓的运行时类型的方法
    3)【对于调用引用实例的成员变量】,无论是编译时还是运行时,均是调用编译时类型的成员变量

    2 什么是反射

    在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性。

    正常情况下,我们运行的所有的程序在编译期时候就已经把那个类被加载了。 Java的反射机制是在编译时并不确定是哪个类被加载了,而是在程序运行的时候才加载。使用的是在编译期并不知道的类。这样的编译特点就是java反射。

    静态编译:在编译时确定类型,绑定对象,即通过。
    动态编译:运行时确定类型,绑定对象。动态编译最大限度发挥了java的灵活性,体现了多态的应用,降低类之间的藕合性。

    3 class类

    .class文件
    Class对象,表示这个类的类型信息

    4 反射的运用

    方式1【object.getClass();】
    方式2【Class.forName("className");】
    方式3【类名.class】

    使用场景1:获取包名,获取类名
    使用场景2:验证所有的类都是Class类的实例
    使用场景3:通过反射创建类对象
    使用场景4:通过反射得到一个类的构造函数,并实现创建带参实例对象
    使用场景5:通过Java反射机制调用类的方法

    5 Android中反射的运用

    1)通过原始的Java反射机制的方式调用资源
    2)Activity的启动过程中Activity对象的创建

    相关文章

      网友评论

          本文标题:8 反射00

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