我一直试图这样做一段时间,这让我发疯。我有一个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”上的语法错误,删除此令牌
答案 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));
}
}