2011-11-15 154 views
0

我會盡量保持我的問題很簡單:創建同一類型的新實例作爲另一個intsance

我有以下實例:

MainClass mc = new ExtendingClass()

我想創建一個全新的實例使用參考mc。 我已經在線閱讀了多個頁面,但沒有找到合適的答案。

人們可以假設它會看起來東西這樣〜(也許它會幫助你理解)。 MyClass mc2 = new mc.getBaseClass()

基本上,結果應該是一樣的:

MyClass mc2 = ExtendingClass()但是,如果讓我在運行時創建mc2,因爲它可以延長各種類的實例。

在此先感謝。

回答

1

你可以嘗試:

mc.getClass().newInstance(); 

這當然只是如果ExtendingClass有一個無參數的默認構造方法的工作原理。如果你想處理參數構造函數,它就會多一分複雜(例如,如果你有一個構造函數一個String):

Constructor<ExtendingClass> constructor = mc.getClass().getConstructor(String.class); 
constructor.newInstance("foo"); 
+0

韋爾普,這似乎這樣的伎倆。但有沒有可能有一種方法不會強迫我使用'throw'聲明或將它與try-catch一起包圍呢? – Acidic

+0

@Acidic:nope,因爲如果(例如)沒有無參數構造函數或構造函數的私有等,需要運行時發信號錯誤,並且需要例外來實現。 – Mac

+1

@Acidic你爲什麼試圖避免嘗試抓住?這是一個標準和有用的構造,如果沒有它,你就無法在Java中取得很大的進展。 – Dogmatixed

相關問題