2011-10-03 78 views
-1

「您是否建議繼承內置鏈接列表以便爲我的多態對象定製?或者我應該從頭開始構建鏈接列表?」Java +鏈接列表+多態對象

+2

你是什麼意思「定製它爲我的多態對象」? 「多態對象」是什麼意思? –

+1

請解釋你想要什麼樣的「定製」。 – NPE

+0

我假設你所說的「多態對象」是指「X類實現接口I的實例」,是否正確? –

回答

1

我不會寫你自己的,除非你真的真的必須這樣做。通過「多態對象」我假設你的意思是你有一個類層次結構,並希望將任何這些類的實例放在列表中。沒有什麼能夠阻止你這麼做,儘管泛型會限制編譯器看到的類型,但你可以通過投射來避免這種情況。或者你可以聲明一個沒有泛型類型的列表,雖然在這種情況下你會失去所有可以獲得的編譯時檢查。

對於99.9999%的情況,默認LinkedList實施將會沒事。除非默認實現完全不適合,否則使用它可能是一個更好的主意。如果您認爲這可能是,請更新您的問題或以非常明確的細節開始新問題。有可能是一種使用默認實現的好方法。

所有這一切,如果這是學習,隨時寫你自己的鏈表。還要注意,你提出的任何東西都必須遵循與默認的LinkedList相同的泛型/打字規則。如果直接將「多態對象」構建到列表中,那很好,但是您剛剛創建了一個真正特定的實現,它只對您有用(可能沒關係)。

2

我不太確定這裏的上下文是什麼,但我永遠不會(從未,幾乎從不)從零開始構建鏈接列表。順便說一下,您可以考慮的是代替繼承。爲「多態對象」定義一個接口,並簡單地將所有鏈接列表相關調用委託給鏈接列表。

0

如果您需要創建自己的LinkedList版本來更改一個或多個方法的行爲,則應使用Decorator模式。我還建議使用番石榴的ForwardingList類,它爲你做了大部分工作。