Java的反射机制

1、Java反射机制的描述

(1)反射机制允许程序在执行期间,借助于Reflection Api取得任何内部类的信息,并能直接操作任意对象的内部属性及方法。
(2)加载完类之后,在堆内存的方法区中就产生了一个Class类型的对象(一个类只有一个Class对象),这个对象就包含了完整类的结构信息,我们可以通过这个对象看到类的结构。这个对象就像一面镜子,透过这个镜子可以看到类的结构,也就形象的称之为“反射”。

2、通过反射的方式获取类的对象及其内部结构

(1)获取类的非私有结构

713942c0d6696ea4d71f405c00501f4f.png  

以Person类为例获取其内部结构:

df416417385ece6cf21694229ad55147.png  

(2)获取类的私有结构

7c8e8ded58ea92339c085953e47100c2.png  

(3)如何看待反射和封装两个技术,是否是矛盾的?
通过反射可以调用类的私有结构,这与类的封装看似是矛盾的。其实类封装后,向外提供的方法几乎已经涵盖了私有方法的调用,通过调用公共结构已经可以满足要求,但是如果要强行查看私有结构的情况,那么就可以用反射。
就像使用U盘,有了插口就可以使用,如果想看其内部零部件,也是可以拆看看的。(个人理解)。

3.关于java.lang.Class类的理解

1)类的加载过程:
程序经过javac.exe命令之后,会生成一个或多个字节码文件(.class结尾)。
接着使用java.exe命令对某个字节码文件进行解析运行。相当于将某个字节码文件加载到内存中,此过程称为类的加载。加载到内存中的类,称为运行时类,此运行时类,就作为Class的一个实例。

4.获取Class实例的四种方式

e5eb21d73ddc56bd014e85979ba9a515.png  

posted @ 2020-09-05 15:22  dong&li  阅读(153)  评论(0)    收藏  举报