簡體   English   中英

如何在Java中動態創建類型的實例

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM