您的位置:首页 > 编程语言 > Java开发

java反射的学习总结

2018-05-23 20:48 169 查看

 java reflect概念理解

看了网上很多材料,以及官方文档,真心觉得,很多时候需要自己消化理解了才行,别人的很多概念,并不好用,甚至有说错的。。

现总结如下:

1、jvm有个运行数据区,其中又划分为:方法区、堆区和栈区;跟java反射有关的是方法区。

2、容易误解的点:反射的实现,依靠的是个“类的镜子对象”(自个定义的囧),这样好理解些,官方定义是:类对象。。真是看吐了,那跟普通对象又有啥区别。还有些说这个“类的镜子对象”是一定要有创建类的普通对象的时候才会出现,真是扯淡。。

比如这样一串代码:Object o = new Object ();

首先运行程序时,扔给了jvm自动将程序跑起来,编辑阶段:代码会编译一个.class文件,然后再被类加载器将Object o加载进了内存中;内存方法区得知了一个叫Object的类,于是,就开始创建了一个“Object的镜子对象”,注意它并不是由new Object()创建出来的对象,后续反射通过java.lang.Class来动态捕获。


3、接下来理解就简单了,用法虽然很多,但是基本差不多。

无非是能对JVM运行程序期间,通过自主创建三类(Construction、Field、Method)对象实例,去读取并管理所有的类的所有信息:类、构造方法、属性和方法,以及方法、属性上的注解、泛型(某些情况下才行),且能动态创建对象。


4、反射的作用:

当我们的程序在运行时,需要动态的加载一些类这些类可能之前用不到所以不用加载到jvm,而是在运行时根据需要才加载,这样的好处对于服务器来说不言而喻,可以网上搜搜,这里不多做解释,也是Spring的基础。
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: