簡體   English   中英

Java-包含一組相同超類的不同子類的數據結構

[英]Java - data structure to contain a set of different subclasses of the same superclass

我需要某種數據結構,其中可以包含同一超類的異構子類,而我自己都實現了所有這些子類。

到目前為止,我正在嘗試使用ArrayList<SuperClass> list = new ArrayList<SuperClass>(); 然后,我假設我將能夠將列表的每個位置轉換為兩個子類中的任何一個,但是效果不是很好。

我需要一種有效的方法來進行上述操作。

謝謝!

您可以使用任何存在的數據結構來做到這一點,我建議您使用ListSet 例如:

Collection<Super> supers = new ArrayList<Super>();  

現在,當你這樣說:

我假設我將能夠將列表的每個位置轉換為任何一個子類,

那是一個無效的假設。 該集合將保留擴展Super所有對象,但是您不能將每個元素任意轉換為所需的任何對象。 如果要尋找這種類型的功能,則需要對每個元素進行一次instanceof測試,示例如下:

for(Super currentSuper : supers)  
{  
    if(currentSuper instanceof SubA)  
    {  
         SubA subA = (Suba) currentSuper);  
         // do stuff with subA
    }  
    else if(currentSuper instanceof SubB)  
    {  
         SubB subB = (SubB) currentSuper);  
         // do stuff with subB
    } 
}  

范圍視需要而定。

現在說到弗拉德:

更好的設計將不是測試實際的類,而只是調用虛擬方法,這在任何情況下都會做正確的事情

如果您可以保證所有潛在子類的功能,並且對覆蓋您的類的人員沒有任何問題(如果您沒有將其標記為最終類),則無需執行測試實例。 相反,您的代碼可能很簡單:

for(Super currentSuper : supers)  
{  
    currentSuper.doSomethingNifty();
}  

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM