[英]How can I create an instance of type dynamically in Java
在我的Java应用程序中,我有方法
public <T extends Transaction> boolean appendTransaction(T transaction) {
...
}
在此方法的内部,我需要创建对象T的实例,该实例扩展了Transaction
这样做是否正确
T newTransaction = (T) transaction.getClass().newInstance();
我认为您应该使用类型T的工厂接口,这样就可以在method-user上强制创建实例接口。
public <T extends Transaction> boolean appendTransaction(
T transaction,
Factory<T> factory) {
...
T newTransaction = factory.createTransaction();
...
}
或多或少,除了Class.newInstance
是邪恶的:
请注意,此方法传播由nullary构造函数引发的任何异常,包括已检查的异常。 这种方法的使用有效地绕过了编译时异常检查,否则该检查将由编译器执行。
改用transaction.getClass().getConstructor().newInstance()
,它使用InvocationTargetException
包装在构造函数中引发的异常。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.