文章目录
- 一、初识反射机制
- 1.1 反射机制概述
- 1.2 反射机制概念
- 1.3 Java反射机制提供的功能
- 1.4 反射机制的优点和缺点
- 二、反射机制相关的 API
- 2.1
一、初识反射机制
1.1 反射机制概述
JAVA 语言是一门静态语言,对象的各种信息在程序运行时便已经确认下来了,内部结构是不可变的。所以当程序在运行时,我们是无法获取对象中的信息的,但是Java 语言推出了对应解决办法--反射机制。反射机制可以动态的获取类对象的属性和方法,这便给Java语言添加了一些“灵活性”,使其成为了“准动态语言”。
JAVA 语言是先编译在运行的语言,所以程序中的对象属性在编译期便已经敲定了,不会再发生改变,但是通过反射机制可以实现属性的改变和获取。
1.2 反射机制概念
JAVA 语言正常想要获取对象一般是通过将类的完整包路径实例化之后获得的。但是通过反射机制的 getClass() 可以通过对象去反向获取类的完整包路径。
1.3 Java反射机制提供的功能
-
在运行时判断任意一个对象所属的类
-
在运行时构造任意一个类的对象
-
在运行时判断任意一个类所具有的成员变量和方法在运行时获取泛型信息
-
在运行时调用任意一个对象的成员变量和方法
-
在运行时处理注解
-
生成动态代理
1.4 反射机制的优点和缺点
-
优点: 可以实现动态创建对象和编译,体现出很大的灵活性
-
缺点: 对程序的性能有影响。使用反射基本上是一种解释性操作,相当于给 JVM 去解释一些要求,然后 JVM 通过这个要求去执行相关的操作。这类操作总是慢于直接执行相同的操作。
二、反射机制相关的 API
-
反射
动态加载对象。在运行状态中,对于任何一个类,能够获取这个类的所有属性和方法,对于一个对象,能够调用它的的任意一个属性和方法,这种动态获取类的内容和动态调用对象的方法称为反射机制。 -
通过反射机制相关的API就可以获取任何Java类的包括属性、方法、构造器、修饰符等信息。元素不必在JVM运行时进行确定,反射可以使得它们在运行时动态地进行创建或调用。
-
JDK中,主要由以下类来实现Java反射机制,这些类都位于java.lang.reflect包中
-
Class类:代表一个类
-
Constructor类:代表类的构造方法
-
Field类:代表类的成员变量
-
Method:代表类的方法
-
2.1
https://blog.csdn.net/weixin_45860338/article/details/114140964