我知道投射只能從子類到超類(上投)完成,但此示例說明了我想要執行的操作。將超類的對象投射到子類 - 向下投射
Class Super {}
Class Sub extends Super {}
Super super = new Super();
Sub sub = (Sub)super;
我相信這是因爲這是不允許的那麼「向下」鑄...
什麼是創建給定類型超級的對象類型分的目標的最佳方式提及。
編輯:
這是問題 - 什麼是對動物轉化成貓的最佳途徑。
答案?從一個基本類型的動物開始,並將屬性複製到貓。添加毛皮和尾巴等。基本上是一個拷貝構造函數。這是正確的答案(還是很好的答案)?
ANOTHER編輯:
我想我的問題是很清楚的,但也許是過於籠統。要求採取「最佳」方式做某些事情往往會給出很多不同的答案。我意識到在不同情況下最好的方式可能會有所不同。
我不是在尋找關於Java或OO基礎知識的教程。只是在徵求意見,以便我可以解決這個問題,因爲我已經用最佳實踐概述了它。
從你的問題來看,你不清楚你知道什麼,你不知道什麼。所以,當人們回答*時,不要感到驚訝,我相信這被稱爲「下來」投射,這是不允許的*部分而不是(非常模糊的)「實際問題。」是的,複製構造函數就是這樣。不,它不是唯一的,工廠方法會很好。不,這不是最好的 - 我們不知道你有什麼限制和假設。 – alf 2012-01-06 13:36:26
@alf我可以告訴你我的問題很清楚 - 你能否就如何在一般情況下提出問題提供更多建議?我希望能夠問一個問題,增加網站的價值,並獲得有價值的迴應,但在這種情況下,似乎我有一種失敗......誤解,低調,我最終有點沮喪。 – Matthew 2012-01-06 13:44:49
好吧,我可以看到選票的細分,並且沒有票下來。沒有投票,但那不是重點,是嗎?標準的HOWTO應該是http://catb.org/~esr/faqs/smart-questions.html - 這很好,關鍵點。在目前的問題上,我會說責怪那些試圖幫助的人不是一個很有創意的想法;說明你的問題很清楚,當你需要兩次編輯是非常接近的責備,只有少數人會注意到這種差異。在這裏添加「感謝您實際閱讀我的問題」,您將獲得公平的侵略性。善待。修復錯誤。不要責怪 – alf 2012-01-06 13:52:08