对象的 ArrayList 作为 EnumMap 的值

发布于 2024-10-24 00:58:03 字数 479 浏览 1 评论 0原文

我已经尝试这样做有一段时间了,这让我发疯。我有一个 EnumMap,其中有一些枚举作为键,并以自定义类的数组列表作为值。所以它看起来像这样:

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

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

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

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

我得到的错误是: - 令牌语法错误,预期为 TypeArgument1 反而 - 标记“(”上的语法错误,<预期 - 令牌“new”上的语法错误,删除此令牌

I've been trying to do this for a little while and it's driving me crazy. I have an EnumMap where I have some enumeration as a key and an arraylist of a self-defined class as the value. So it looks something like this:

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

This keeps giving me an error. Not sure exactly what's happening.

EDIT:
Yes, myEnum is an enum class.
My mistake, I should have mentioned what error is and where it happens. The error occurs when I do the following:

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

The error I get is:
- Syntax error on tokens, TypeArgument1 expected
instead
- Syntax error on token "(", < expected
- Syntax error on token "new", delete this token

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

生活了然无味 2024-10-31 00:58:04

对于:

enum Test {
  TEST0,
  TEST1;
}

您可以像这样使用EnumMap

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

希望这可以澄清用法。

For:

enum Test {
  TEST0,
  TEST1;
}

You would use the EnumMap like this:

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

Hopefully that clears up the usage.

横笛休吹塞上声 2024-10-31 00:58:04

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

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

您需要使用 () 参数化 ArrayList;

Also, I assume myEnum refers to the class name and not an instance of class MyEnum and same for myObj. We usually start class names with uppercase letters, so this is a little bit confusing.

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

You need to parameterize the ArrayList with ();

活泼老夫 2024-10-31 00:58:04
   hand.put(myEnum.someEnum, new ArrayList());

应该是这样的:

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

should be like this:

   map.put(myEnum.someEnum, new ArrayList<myObj>());
一页 2024-10-31 00:58:04

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));
    }
}

melv's code seems to work:

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));
    }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文