我有一個名爲DataSet的類,具有各種構造函數,每個構造函數指定不同類型的變量。它看起來有點像這樣:Java:與泛型和收集類型檢測問題
public class DataSet
{
private HashSet Data;
public DataSet(DataObject obj)
{
Data = new <DataObject>HashSet();
Data.add(obj);
}
public DataSet(ObjectRelationship rel)
{
Data = new <ObjectRelationship>HashSet();
Data.add(rel);
}
// etc.
注:我還沒有得到測試的代碼由於不完整的部分(這我建立現在)。
在我目前正在構建的函數getDataObjects()
中,我需要返回此集合表示的所有DataObject對象。對於初始化類的HashSet的構造函數,Data
的類型不是DataObject
(如上面的ObjectRelationship
),那裏顯然不會存儲任何DataObjects。在這種情況下,我需要能夠檢測到HashSet'Data'啓動的類型(比如,說明是否'ObjectRelationship',我的意思是)。我該怎麼做呢?
TL;博士:如何判斷一個集合(在這種情況下,一個HashSet)用在我的代碼發起的(就像一個「如果」或「開關」語句類型或者其他的東西)?
不使用泛型會導致完全相同的問題。 – Loki 2008-12-26 14:57:49
看來你正在實施某種收藏。也許你可以學習其他集合類的源代碼來了解如何實現你的目標? – Loki 2008-12-26 16:11:11
我只是包裝HashSet來做一些特定的事情。這不是一種真正的新型收藏,但我想我可以做到這一點。儘管如此,它的底層功能根據所提供的數據類型而有所不同。我也只使用了一些特定的類型。 – 2008-12-26 16:15:50