2011-03-17 23 views
0

我一直在試圖做這個一段時間,它讓我瘋狂。我有一個EnumMap,我有一些枚舉作爲鍵和一個自定義類的數組列表作爲值。所以它看起來像這樣:對象的ArrayList作爲枚舉映射的值

private EnumMap<myEnum,List<myObj>> map = 
    new EnumMap<myEnum,List<myObj>>(myEnum.class); 

這不斷給我一個錯誤。不確定發生了什麼。編號: 是的,myEnum是一個枚舉類。 我的錯誤,我應該提到什麼是錯誤以及它發生在哪裏。當我執行以下操作時會發生此錯誤:

hand.put(myEnum.someEnum,new ArrayList());

我得到的錯誤是: - 上標記語法錯誤,TypeArgument1預計 代替 - 令牌「(」語法錯誤,<預期 - 令牌語法錯誤的「新」,刪除此令牌

+0

是'myEnum'您的枚舉類的名字嗎?如果不是,它應該是(不能從你的駱駝套中分辨出來)。如果是這樣,請發佈錯誤。這是一個編譯錯誤? – Melv 2011-03-17 03:26:40

+0

你的代碼似乎沒問題,也許你應該發佈更多信息 – 2011-03-17 03:36:22

+0

我的錯誤,我應該提到什麼是錯誤以及它發生在哪裏。當我執行以下操作時會發生錯誤: hand.put(myEnum.someEnum,new ArrayList ()); 我得到的錯誤是: - 上標記語法錯誤,TypeArgument1預計 \t代替 \t - 令牌語法錯誤「(」 <預期 \t - 令牌語法錯誤的「新」,刪除此令牌 – anujahooja 2011-03-17 03:38:17

回答

0

爲:

enum Test { 
    TEST0, 
    TEST1; 
} 

你會使用EnumMap這樣的:

EnumMap<Test, List<Object>> map = new EnumMap<Test, List<Object>>(Test.class); 
map.put(Test.TEST0, new ArrayList<Object>()); 

希望這清除了使用。

+0

是的,這是正是我在做什麼(我在我的編輯中添加了),而且我仍然遇到了上述錯誤,它也應該按照我的說法工作。 – anujahooja 2011-03-17 03:42:19

0

另外,我認爲myEnum指的是類的名稱,而不是類myEnum和同爲MyObj中的一個實例。我們通常開始用大寫字母類名,所以這是一個有點混亂。

hand.put(myEnum.someEnum, new ArrayList()); 

您需要參數A帶有()的rrayList;

0
hand.put(myEnum.someEnum, new ArrayList()); 

應該是這樣的:

map.put(myEnum.someEnum, new ArrayList<myObj>()); 
0

melv的代碼似乎工作:

import java.util.*; 
enum Color { 
    r,g,b; 
} 
public class Main{ 
    public static void main(String[] args) { 
     EnumMap<Color, List<Object>> map = new EnumMap<Color, List<Object>>(Color.class); 
     map.put(Color.r, new ArrayList<Object>()); 
     map.get(Color.r).add(new Integer(42)); 
     System.out.println(map.get(Color.r).get(0)); 
    } 
}