java利用反射传类名然后创建对象
时间: 2023-10-26 10:49:01 浏览: 105
您可以使用Java的反射机制来传递类名并创建对象。下面是一个示例代码:
```java
public class MyClass {
public MyClass() {
// 构造函数
}
public void myMethod() {
// 方法
}
}
public class Main {
public static void main(String[] args) {
String className = "MyClass";
try {
// 根据类名获取Class对象
Class<?> clazz = Class.forName(className);
// 使用Class对象创建实例
Object obj = clazz.getDeclaredConstructor().newInstance();
// 调用对象的方法
Method method = clazz.getDeclaredMethod("myMethod");
method.invoke(obj);
} catch (ClassNotFoundException | InstantiationException | IllegalAccessException | NoSuchMethodException | InvocationTargetException e) {
e.printStackTrace();
}
}
}
```
在上面的示例中,我们首先通过`Class.forName(className)`方法获取到类的`Class`对象。然后使用`clazz.getDeclaredConstructor().newInstance()`创建类的实例。最后,我们使用反射调用实例的方法,通过`clazz.getDeclaredMethod("myMethod")`获取方法对象,并使用`method.invoke(obj)`调用该方法。
请注意,这个示例假设您已经知道类名是"MyClass",并且该类有一个无参数的构造函数和一个名为"myMethod"的方法。如果类名、构造函数或方法名称不正确,将会抛出相应的异常。
阅读全文