2012-02-14 77 views
0

裏面我是新來的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

回答

4

不能提供基本類型(如int)作爲類型參數爲通用類。

變化

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

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

還要注意第一類型參數是和第二類型的參數的類型是的類型。我的直覺是,你可能已經在你的代碼中交換了它們。

進一步閱讀:

1

您不能在基本類型(如int)parametrise通用(如Map<K,V>)。嘗試使用一個包裝類,像Integer代替:

1

變化intInteger

泛型只能接受引用類型作爲參數。

2

的問題是int作爲地圖的值的類型! int是一個原始和Java泛型只適用於參考類型。

更換intInteger,它會:-)工作。

由於Java有auto boxing/unboxing,您可以使用普通操作,它會自動爲您變換int s到Integermap.put(key, 1)將工作。它會做Integer.intValue(1)這是一個Integer

0

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

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