如何在Java中动态创建类型为的实例
在我的Java应用程序中,我有一个方法如何在Java中动态创建类型为的实例,java,dynamic-typing,Java,Dynamic Typing,在我的Java应用程序中,我有一个方法 public <T extends Transaction> boolean appendTransaction(T transaction) { ... } 或多或少,除了那是邪恶的: 请注意,此方法传播nullary构造函数引发的任何异常,包括选中的异常。使用此方法可以有效地绕过编译时异常检查,否则将由编译器执行 而是使用,它用一个.包装构造函数中抛出的异常。我认为您应该使用类型为T的工厂接口,这样您就可以在用户方法上强制创建实例接
public <T extends Transaction> boolean appendTransaction(T transaction) {
...
}
或多或少,除了那是邪恶的:
请注意,此方法传播nullary构造函数引发的任何异常,包括选中的异常。使用此方法可以有效地绕过编译时异常检查,否则将由编译器执行
而是使用,它用一个.包装构造函数中抛出的异常。我认为您应该使用类型为T的工厂接口,这样您就可以在用户方法上强制创建实例接口
public <T extends Transaction> boolean appendTransaction(
T transaction,
Factory<T> factory) {
...
T newTransaction = factory.createTransaction();
...
}
公共事务(
T交易,
工厂(工厂){
...
T newTransaction=factory.createTransaction();
...
}
比getConstructor()的别名更邪恶。newInstance()?我更新了一个动机。它神奇地重现了默认构造函数抛出的任何异常,甚至是您无法显式捕获的已检查异常(因为Class.newInstance
没有在其签名中声明它们)。它绝对更干净,更不神奇。
public <T extends Transaction> boolean appendTransaction(
T transaction,
Factory<T> factory) {
...
T newTransaction = factory.createTransaction();
...
}