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