Object的ArrayList作为EnumMap的值

时间:2011-03-17 03:16:30

标签: java arraylist enumeration

我一直试图这样做一段时间,这让我发疯。我有一个EnumMap,其中我将一些枚举作为键,并将自定义类的arraylist作为值。所以它看起来像这样:

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

这一直给我一个错误。不确定到底发生了什么。

编辑: 是的,myEnum是一个枚举类。 我的错误,我应该提到错误是什么以及它发生在哪里。执行以下操作时会发生错误:

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

我得到的错误是: - 令牌上的语法错误,期望TypeArgument1      代替      - 令牌上的语法错误“(”,&lt; expected      - 令牌“new”上的语法错误,删除此令牌

4 个答案:

答案 0 :(得分:0)

另外,我假设myEnum引用的是类名,而不是MyEnum类的实例,myObj也是如此。我们通常用大写字母开始类名,所以这有点令人困惑。

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

您需要使用();

参数化ArrayList

答案 1 :(得分: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>());

希望能够清除用法。

答案 2 :(得分:0)

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

应该是这样的:

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

答案 3 :(得分: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));
    }
}