2011-05-05 101 views
2

我有一個util類應該使用反射來調用給定Class對象的方法。是否有可能調用默認構造函數而不是零參數構造函數?

現在它使用.newInstance()創建一個新實例,然後調用我想測試的方法。

問題是,我的一些類的零參數構造函數由於缺少依賴關係而引發異常,並使我無法調用實際上想要測試的方法。

是否有可能調用Java的默認構造函數來創建實例而不是自定義的零參數構造函數?

回答

8

如果類沒有定義構造函數,則只有默認的構造函數。

無參數構造函數應該只取決於您提供的依賴關係(即無),並且您認爲您仍然可以使用該類,而無需其他依賴項。

在Sun/Oracle JVM中,您可以使用Unsafe.allocateInstance(Class)創建實例而不調用構造函數,但是我會嘗試先修復您的類設計。

2

默認構造函數僅在您自己不提供構造函數時纔會創建。
因此,只要你的類至少有一個構造函數,那個默認的構造函數就不會被創建。