Java 反射是指在运行时动态地获取对象的信息的能力。使用 Java 反射机制,可以在不知道类的名称的情况下,创建类的对象,调用方法,获取/设置属性,以及获取构造方法并调用它。
Java 反射机制是在运行时使用的,因此它可以用来在运行时动态加载类,并且可以在不知道类名的情况下创建对象。这个特性使得反射非常强大,因为它允许在运行时检查和使用类的信息。
Java 反射机制由 java.lang.reflect 包提供。该包中包含了很多类和接口,用于操作类的信息。最常用的类是 Class 类,它表示一个类的信息。使用 Class 类,可以获取类的名称,获取类的成员变量和方法,以及调用类的方法。
Java反射机制提供了几种方法来操作对象的内部信息。这些方法包括:
-
获取类的信息: 使用
Class.forName
方法获取类的信息。 -
获取构造函数信息: 使用
Class.getConstructors
方法获取类的构造函数信息。 -
获取方法信息: 使用
Class.getMethods
方法获取类的方法信息。 -
获取域信息: 使用
Class.getFields
方法获取类的域信息。 -
调用方法: 使用
Method.invoke
方法调用对象的方法。 -
获取域值: 使用
Field.get
方法获取对象的域值。 -
设置域值: 使用
Field.set
方法设置对象的域值。
例如,你可以使用以下代码获取类的信息并调用它的方法:
// 获取类信息
Class cls = Class.forName("com.example.MyClass");
// 获取方法信息
Method method = cls.getMethod("myMethod", int.class, String.class);
// 创建对象
Object obj = cls.newInstance();
// 调用方法
method.invoke(obj, 123, "hello");
你也可以使用以下代码获取域信息并获取或设置域值:
// 获取域信息
Field field = cls.getField("myField");
// 获取域值
Object value = field.get(obj);
// 设置域值
field.set(obj, "new value");