![](/img/trans.png)
[英]Java Subclasses that have different primitive data members, but same methods
[英]Java - data structure to contain a set of different subclasses of the same superclass
我需要某種數據結構,其中可以包含同一超類的異構子類,而我自己都實現了所有這些子類。
到目前為止,我正在嘗試使用ArrayList<SuperClass> list = new ArrayList<SuperClass>();
然后,我假設我將能夠將列表的每個位置轉換為兩個子類中的任何一個,但是效果不是很好。
我需要一種有效的方法來進行上述操作。
謝謝!
您可以使用任何存在的數據結構來做到這一點,我建議您使用List
或Set
。 例如:
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.