专注Java教育14年 全国咨询/投诉热线:400-8080-105
动力节点LOGO图
始于2009,口口相传的Java黄埔军校
首页 学习攻略 Java学习 Java基础学习:java反射视频

Java基础学习:java反射视频

更新时间:2020-04-14 11:59:28 来源:动力节点 浏览1946次


    首先我们先声明一个class,内部包含了另一个对象,并且写了一些私有/公有/静态的变量及方法,一会将针对这个class进行反射的操作:


    这里的日志使用了Log是Android里的打印输出,而非Java中的System.out.print。


   Java基础学习:java反射视频png


    内部的ReflectBean类


    Java基础学习:java反射视频


    获取拥有真正对象代码结构的Class:


    不知道各位小伙伴们有没有思考过,为什么我们new一个类的时候这么方便,反而到了反射的时候会如此的麻烦?


    Java基础学习:java反射视频g


    将Class实例化


  Java基础学习:java反射视频


    反射调用方法


   Java基础学习:java反射视频ng


    反射调用变量/static


   Java基础学习:java反射视频


    继续理解


    我们知道JVM在使用一个类的时候,会先去加载这个类。也就是生成唯一的Class对象。这个Class对象拥有我们的java代码的变量,方法结构。但是它并不是一个实例。因此我们在反射的时候,要先获取构造方法对象,也就是Class返回给我们的Constructor。此时我们运行这个对象的newInstance,我们就初始化了这个Class,获取了这个Class的实例。(这也就是为什么我们反射操作会如此的麻烦)


    实例化了这个对象之后,虽然只是一个Object对象,但是它和我们真正new的对象没有任何区别,那么此时我们就可以正常的调用方法了。


    我们知道,static是属于类,在类被加载的时候就已经出现了。那么此时,反射也侧面证实了这个问题:


    在我们反射调用static的变量和方法时,set或者invoke的参数传的是null,也就是说我们没有传递任何对象实例,所以此时我们使用的是这个在类被加载时就被创建的Class对象中的变量和方法,而非操作的实例对象。因此,对static是不是有了一个更为深刻的理解呢?


 以上就是动力节点java培训机构的小编针对“Java基础学习:java反射视频”的内容进行的回答,希望对大家有所帮助,如有疑问,请在线咨询,有专业老师随时为你服务。


提交申请后,顾问老师会电话与您沟通安排学习

免费课程推荐 >>
技术文档推荐 >>