2016-10-03 28 views
0
public class Depot extends Item2 
{ 
} 

public class Station extends Item2 
{ 
} 

private final HashMap<Integer, Depot> depots = new HashMap<>(); 
private final HashMap<Integer, Station> stations = new HashMap<>(); 

兩個倉庫和站點存儲一些具有Item2基數的東西。現在我想傳遞給函數的:Java,將HashMap元素投射到它的祖先

Item2 item; 
canBeAdded(item, depots); 
canBeAdded(item, stations); 

private boolean canBeAdded (Item2 item, HashMap<Integer, Item2> items) 
{ 

遺憾的是其並不好,在canBeAdded它說

「不兼容類型:HashMap <Integer, Depot>不能轉換爲<Integer, Item2>

+5

您可以使用Map 項目' –

+0

哦,很酷,這是什麼?或者它叫什麼名字?我不是Java專家 –

+1

當在泛型中使用''時,它意味着它必須是那種類型。如果你使用'?擴展Item2'意味着任何延伸該類型的東西。 –

回答

1

您的簽名改成這樣:

private static boolean canBeAdded(Item2 item, HashMap<Integer, ? extends Item2> items) { 

HashMap<Integer, Depot>不是一個子類的HashMap<Integer, Item2>但您可以指定允許任何子類如此(「通配符」)。使它更少指定它,當然你需要使用它。

相關問題