所谓反射(Refection),其实就是程序自己能够检查自身信息,就像程序会通过镜子反光来看自己本身一样。反射使得 Java语言具有了“动态性”,即程序首先会检查某个类中的方法、属性等信息,然后再动态地调用或创建该类或该类的对象
一、反射的基石——Class类
Class类用来描述Java中的一切事物,该类描述了类名字、类的访问属性、类所属的包名、字段名称的列表、方法名称的列表。例如Class类的getName()方法可以获取所描述类的类名
Class实例代表内存中的一份字节码,所谓字节码就是当Java虚拟机加载某个类的对象时,首先需要把硬盘上该类的二进制源码编译成class文件的二进制代码(字节码),然后把class文件的字节码加载到内存中,之后再创建该类的对象
二、反射的基本应用
所谓反射就是把Java类中的各种成分隐射成相应的Java类。通过反射,在具体编写程序时,不仅可以动态地生成某个类中所需要的成员,而且还能动态地调用相应的成员。查看API帮助文档可以发现,不仅一个Java类可以用Class类的对象表示,而且Java类的各种成员,如成员变量、方法、构造方法、包等,也可以用相应的Java类表示
反射一般会设计如下类:Class(表示一个类的类),Field(表示属性的类),Method(表示方法的类)和Construct(表示构造方法的类)。那么如何获取这些类(除了Class类)的对象呢?通过查看API帮助文档可以发现,Class类存在一系列的方法,来获取相关类中的变量、方法、构造方法、包等信息。
---------------------
作者:弹指间
来源:CSDN
原文:https://blog.csdn.net/chenyonken/article/details/80868936
版权声明:本文为博主原创文章,转载请附上博文链接!