gpt4 book ai didi

java - 返回动态类的实例

转载 作者:行者123 更新时间:2023-12-02 09:54:02 24 4
gpt4 key购买 nike

我正在尝试创建一个接收类(任何类)并返回此类的实例的方法。 (就像“ Spring ”)。有了这个代码我该怎么办?

主要:

public static void main(String[] args) {
Factory factoria = new Factory();
Auto auto = factoria.getObject(Auto.class);
System.out.println(auto.Motor);
}

工厂类(getObject 是我正在尝试执行的方法):

public Class<?> getObject(Class<?> clase) throws ClassNotFoundException, InstantiationException, IllegalAccessException{

Class<?> cls = Class.forName(clase.getName());
Class<?> objetoRaiz = (Class<?>) cls.newInstance();

// if @Component
procesar(objetoRaiz);

return objetoRaiz;
}

最佳答案

最好使用默认构造函数,因为这可能会引发异常并通常会处理某些内容。

public <T> T createObject(Class<T> type) throws NoSuchMethodException,
InstantiationException, IllegalAccessException, InvocationTargetException {
return type.getConstructor().newInstance();
}

或者在使用方面更容易:

public <T> T createObject(Class<T> type) throws IllegalArgumentException {   
try {
return type.getConstructor().newInstance();
} catch (NoSuchMethodException | InstantiationException
| IllegalAccessException | InvocationTargetException e) {
throw new IllegalArgumentException(e);
}
}
<小时/>

Holger 反馈后:

有一个共同的基类:NoSuchMethodExceptionInstantiationExceptionIllegalAccessExceptionInitationTargetException。最好的是:

public <T> T createObject(Class<T> type) throws ReflectiveOperationException  {   
return type.getConstructor().newInstance();
}

关于java - 返回动态类的实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56132993/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com