2017-07-19 62 views
-1

假設有一個稱爲實體的接口,有許多類實現它。 我需要創建一個類,該類的每個實例,它集將只包含實現該接口的實體對象,但是從相同實施類,例如 - 如果人與自行車實現接口實體,然後該類的一個實例將只有一個完整的集合,只有Person對象或Bicycle對象,但不能同時存在。 我感謝您的幫助!如何執行只包含實現接口但來自同一個實現類的對象的Collection?

+0

'收集 theCollection'(RESP。'收藏 ...')!?真的,你的問題有點不清楚。 – Seelenvirtuose

+0

無法通過Java的類型系統(如,你不能保證在列表中的一切都是一個確切的類型,而不是類型的子類,但是你的設計不應該要求你)。您所能做的只是在運行時驗證列表中實例的類型。 –

+0

你可以聲明一個帶有多個邊界的有界類型(''),但我並沒有真正看到這一點。你能分享一些代碼嗎? –

回答

0
public class Something<T extends Entity> { 
[...] 
private Collection<T> entities; 

T將永遠是一個類實現Entity。您可以在此課程的所有方法中使用T

0

如果你真的想這樣做,你可以寫你自己的附加功能,並與類集合中的第一個對象的比較類新的對象。 (如果您的收藏中沒有物品,只是添加它)

void add(Entity ent) { 
    if (collection == null) { 
     collection = new Collection<Entity>(); 
     collection.add(ent); 
    } 
    else if(ent.getClass().equals(collection.get(0).getClass()) { 
     collection.add(ent); 
    } 
    else { 
     // wrong class error handling here 
    } 
} 

就是這樣的。

+0

你能否提供一些示例代碼? – WhatsThePoint