Java 反射机制
什么是反射
Java 反射机制是 Java 语言的一个特性,它允许程序在运行时访问、检查和修改它自己的结构,例如类、接口、属性和方法。反射机制使得 Java 程序能够动态地创建对象、调用方法、修改字段值等,而不需要在编译时就知道具体的类信息。
提供反射支持主要是Class和java.lang.reflect类库。
获取Class对象的四种方式
1.通过类名.class获取
class c = User.class;
2.通过Class.forName名获取
class c = Class.forName("com.example.User");
3.通过对象.getClass()获取
User user = new User();
class c = user.getClass();
4.通过类加载器获取(不推荐)
ClassLoader.getSystemClassLoader().loadClass("com.example.User");
java反射常见API的介绍
- Class 类
- 功能:表示类的对象,提供了获取类信息的方法,如字段、方法、构造函数等。
- 主要方法:
getFields():获取所有公共字段。
getDeclaredFields():获取所有声明的字段,包括私有字段。
getMethods():获取所有公共方法。
getDeclaredMethods():获取所有声明的方法,包括私有方法。
getConstructors():获取所有公共构造函数。
getDeclaredConstructors():获取所有声明的构造函数,包括私有构造函数。
getSuperclass():获取类的父类。
getInterfaces():获取类实现的所有接口。
getAnnotations(): 获取类上的所有注解。
- Field 类
- 功能:表示类的字段(属性),提供了访问和修改字段值的方法。
- 主要方法:
get(Object obj):获取指定对象的字段值。
set(Object obj, Object value):设置指定对象的字段值。
getType():获取字段的数据类型。
getModifiers():获取字段的修饰符(如 public、private)。
getAnnotations(): 获取属性上的所有注解。
- Method 类
- 功能:表示类的方法,提供了调用方法的能力。
- 主要方法:
invoke(Object obj, Object... args):调用指定对象的方法。
getReturnType():获取方法的返回类型。
getParameterTypes():获取方法的参数类型。
getModifiers():获取方法的修饰符(如 public、private)。
getAnnotations(): 获取方法上的所有注解。
- Constructor 类
- 功能:表示类的构造函数,提供了创建对象的能力。
- 主要方法:
newInstance(Object... initargs):创建一个新实例,使用指定的构造函数参数。
getParameterTypes():获取构造函数的参数类型。
getModifiers():获取构造函数的修饰符(如 public、private)。
getAnnotations(): 获取构造方法上的所有注解。
java反射的示例代码请看参考