地图一个地图的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; 

    } 
+0

将地图作为简单类型的关键? – UmNyobe 2012-02-14 14:10:08

+2

试用'Integer'而不是'int'。 – 2012-02-14 14:10:41

不能提供基本类型(如int)作为类型参数为通用类。

变化

Map<Map<Appliance,SimpleDateFormat>,int> 
            ^^^ 

Map<Map<Appliance,SimpleDateFormat>,Integer> 
            ^^^^^^^ 

还要注意第一类型参数是和第二类型的参数的类型是的类型。我的直觉是,你可能已经在你的代码中交换了它们。

进一步阅读:

您不能在基本类型(如int)parametrise通用(如Map<K,V>)。尝试使用一个包装类,像Integer代替:

变化intInteger

泛型只能接受引用类型作为参数。

的问题是int作为地图的值的类型! int是一个原始和Java泛型只适用于参考类型。

更换intInteger,它会:-)工作。

由于Java有auto boxing/unboxing,您可以使用普通操作,它会自动为您变换int s到Integermap.put(key, 1)将工作。它会做Integer.intValue(1)这是一个Integer

Map不能具有int(主型),它仅接受Objects

Map<Map<Appliance,SimpleDateFormat>, Integer > toggle;