有没有办法将具体类型的列表/映射发送到接收接口列表/映射的方法?

时间:2015-01-28 07:53:47

标签: java generics

有没有办法将具体类型的列表/地图发送到接收接口列表/地图的方法?

e.g。 (Toyota extends CarCar implements ICar

我想打电话

private static void doSomething(Map<String, ICar> cars) {}

使用

Map<String, Toyota> toyotas = new HashMap<>();
doSomething0(toyotas);

2 个答案:

答案 0 :(得分:1)

您可以使用类型边界:

private static void doSomething(Map<String, ? extends ICar> cars) {}

示例:

public static void doSomething (Map<String,? extends Number> numMap)
{
    for (Number n : numMap.values ())
         System.out.println (n);
}

public static void main (String[] args)
{
    Map<String,Integer> intMap = new HashMap<String, Integer> ();
    intMap.put("two",2);
    intMap.put("three",3);
    doSomething (intMap);
}

答案 1 :(得分:1)

将您的声明更改为:

private static void doSomething(Map<String, ? extends ICar> cars) {}

这意味着除了扩展ICar的所有内容。