我是java的新手。我正在尝试传递地图在另一个地图内的参数但是我得到一个错误“标识符预期”(找到int,必需参考)。
这是代码:
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;
}
答案 0 :(得分:4)
您不能提供基本类型(例如int
)作为泛型类的类型参数。
更改
Map<Map<Appliance,SimpleDateFormat>,int>
^^^
到
Map<Map<Appliance,SimpleDateFormat>,Integer>
^^^^^^^
另请注意第一个类型参数是键的类型,第二个类型参数是值的类型。我的直觉是你可能已经在代码中交换了它们。
进一步阅读:
答案 1 :(得分:2)
问题是int
作为地图的值类型! int
是原始的,Java Generics仅适用于引用类型。
将int
替换为Integer
,它将起作用: - )。
由于Java有auto boxing/unboxing,您可以使用普通操作,它会自动将int
转换为Integer
s。 map.put(key, 1)
会奏效。它会Integer.intValue(1)
Integer
。
答案 2 :(得分:1)
您无法对基本类型(如Map<K,V>
)上的泛型(如int
)进行参数化。尝试使用类似Integer
的包装类:
Map<Map<Appliance,SimpleDateFormat>,Integer>
答案 3 :(得分:1)
将int
更改为Integer
。
泛型只能接受引用类型作为参数。
答案 4 :(得分:0)
int
中不能有Map
(主要类型),只接受Objects
:
Map<Map<Appliance,SimpleDateFormat>, Integer > toggle;