如何在Java中动态创建类型的实例

Mik*_*aev 2 java dynamic-typing

在我的Java应用程序中,我有方法

public <T extends Transaction> boolean appendTransaction(T transaction) {
   ...
}
Run Code Online (Sandbox Code Playgroud)

在这个方法里面我需要创建一个扩展Transaction的对象T的实例

这样做是否正确

T newTransaction = (T) transaction.getClass().newInstance();
Run Code Online (Sandbox Code Playgroud)

cru*_*dog 5

我认为你应该使用类型为T的工厂接口,这样你就可以在方法用户上强制创建一个实例接口.

public <T extends Transaction> boolean appendTransaction(
        T transaction, 
        Factory<T> factory) {
    ...
    T newTransaction = factory.createTransaction();
    ...
}
Run Code Online (Sandbox Code Playgroud)