映射里面的地图java

时间:2012-02-14 14:08:43

标签: java netbeans

我是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;

    } 

5 个答案:

答案 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;