地图一个地图的Java
问题描述:
里面我是新来的Java。我试图传递一个地图是在另一个地图内的参数,但是我得到一个错误“标识符预期”(找到int,需要的参考)。地图一个地图的Java
这是代码:
package learning;
import java.util.*;
import java.text.SimpleDateFormat;
public interface Policy {
public void toggleApp(Map<Map<Appliance,SimpleDateFormat>,int>toggle); *error here*
}
class Appliance
{
String appName = "";
int appID;
double demand = 0.0;
}
答
不能提供基本类型(如int
)作为类型参数为通用类。
变化
Map<Map<Appliance,SimpleDateFormat>,int>
^^^
到
Map<Map<Appliance,SimpleDateFormat>,Integer>
^^^^^^^
还要注意第一类型参数是键和第二类型的参数的类型是值的类型。我的直觉是,你可能已经在你的代码中交换了它们。
进一步阅读:
答
您不能在基本类型(如int
)parametrise通用(如Map<K,V>
)。尝试使用一个包装类,像Integer
代替:
答
变化int
到Integer
。
泛型只能接受引用类型作为参数。
答
的问题是int
作为地图的值的类型! int
是一个原始和Java泛型只适用于参考类型。
更换int
与Integer
,它会:-)工作。
由于Java有auto boxing/unboxing,您可以使用普通操作,它会自动为您变换int
s到Integer
。 map.put(key, 1)
将工作。它会做Integer.intValue(1)
这是一个Integer
。
答
在Map
不能具有int
(主型),它仅接受Objects
:
Map<Map<Appliance,SimpleDateFormat>, Integer > toggle;
将地图作为简单类型的关键? – UmNyobe 2012-02-14 14:10:08
试用'Integer'而不是'int'。 – 2012-02-14 14:10:41