我有一個鑄造問題,我在這方面有點生疏。 我有2個clasess這樣的:
class A{ int i; String j ; //Getters and setters}
class B extends A{ String k; //getter and setter}
我有一個這樣的方法中,在實用輔助類:
public static A converts(C c){}
其中C是被從數據庫retireved然後轉換的對象。
的問題是我想通過傳遞「C」和找回B. 調用上面的方法所以,我想這一點:
B bClasss = (B) Utility.converts(c);
因此,即使上述方法返回AI試圖垂頭喪氣它到B,但我得到一個運行時ClassCastException。 這真的沒有辦法解決嗎?我必須編寫一個單獨的convert()方法來返回一個B類類型嗎?
如果我宣佈我的B類,如:
class B { String k; A a;} // So instead of extending A it has-a A, getter and setters also
然後我可以叫我現有的方法是這樣的:
b.setA(Utility.converts(c));
這樣我可以重用現有的方法,即使extends關係更有意義。我該怎麼辦?任何幫助非常感謝。謝謝。
謝謝號Yoni,我已經宣佈了以上方法轉換如下: 公共靜態轉換一個(C C){} 所以它的回報A.我想知道有沒有解決這個問題沒有別的辦法,其他而不是將關係從is-a 改爲has-a或者編寫另一種方法? – msharma 2010-05-13 19:16:50
它不是轉換()的聲明的問題,它是轉換()的**實現**的問題(它是做什麼的?) – Justin 2010-05-13 19:28:05