将类类型作为参数传递并创建它的实例

use*_*997 16 java oop

我想将类类型作为参数传递给java.all中具有相同构造函数参数的方法.并在该方法中创建该类的实例.这可能吗?

Nar*_*hai 17

使用反射创建实例:

Object obj = clazz.newInstance();
Run Code Online (Sandbox Code Playgroud)

这将使用默认的no-arg构造函数来创建实例.

Constructor<?> constructor = clazz.getConstructor(String.class);
Object object = constructor.newInstance(new Object[] { strArgument });
Run Code Online (Sandbox Code Playgroud)

如果你有一些其他构造函数接受参数,则创建实例.


Sap*_*aik 7

newInstance()已弃用。

此方法传播由空构造函数引发的任何异常,包括已检查的异常。使用此方法可以有效地绕过原本由编译器执行的编译时异常检查。Constructor.newInstance 方法通过将构造函数抛出的任何异常包装在(已检查的)java.lang.reflect.InitationTargetException 中来避免此问题。

已弃用的调用:

clazz.newInstance()
Run Code Online (Sandbox Code Playgroud)

可以替换为:

clazz.getDeclaredConstructor().newInstance()
Run Code Online (Sandbox Code Playgroud)

例子:

void MyMethod(Class type) throws InstantiationException, IllegalAccessException {
    type.getDeclaredConstructor().newInstance();
}
Run Code Online (Sandbox Code Playgroud)