通过反射新建实例
时间: 2023-08-15 18:03:08 浏览: 45
在 Java 中,可以使用反射机制创建一个类的实例。具体步骤如下:
1. 获取该类的 Class 对象。可以使用 Class.forName() 方法,也可以使用类名的 .class 属性。
2. 调用 Class 对象的 newInstance() 方法创建该类的实例。如果该类没有默认构造方法,则需要使用 getConstructor() 方法获取指定的构造方法,再调用 newInstance() 方法创建实例。
示例代码如下:
```java
public class MyClass {
private int value;
public MyClass(int value) {
this.value = value;
}
public int getValue() {
return value;
}
}
public class Main {
public static void main(String[] args) throws Exception {
// 获取 MyClass 类的 Class 对象
Class<?> clazz = Class.forName("MyClass");
// 创建 MyClass 的实例
MyClass obj = (MyClass)clazz.newInstance();
System.out.println(obj.getValue()); // 输出 0
// 获取 MyClass(int) 构造方法并创建实例
Constructor<?> constructor = clazz.getConstructor(int.class);
obj = (MyClass)constructor.newInstance(42);
System.out.println(obj.getValue()); // 输出 42
}
}
```
在以上示例中,我们首先获取了 MyClass 类的 Class 对象,然后通过 newInstance() 方法创建了一个 MyClass 的实例。由于 MyClass 类的成员变量 value 没有初始化,默认值为 0,因此 getValue() 方法返回 0。
接下来,我们获取了 MyClass(int) 构造方法的 Constructor 对象,并通过 newInstance() 方法创建了一个新的 MyClass 实例。这次我们传入了参数 42,因此 getValue() 方法返回 42。