ArrayList объекта как значение EnumMap - PullRequest
0 голосов
/ 17 марта 2011

Я пытался сделать это некоторое время, и это сводит меня с ума. У меня есть EnumMap, где у меня есть какое-то перечисление в качестве ключа и массив списков самоопределенного класса в качестве значения. Так это выглядит примерно так:

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

Это продолжает давать мне ошибку. Не уверен, что именно происходит.

EDIT: Да, myEnum - это класс enum. Моя ошибка, я должен был упомянуть, что это за ошибка и где она происходит. Ошибка возникает, когда я делаю следующее:

hand.put (myEnum.someEnum, новый ArrayList ());

Я получаю ошибку: - Синтаксическая ошибка на токенах, ожидается TypeArgument1 вместо - Синтаксическая ошибка на токене "(", <ожидается - Синтаксическая ошибка на токене «новый», удалить этот токен </p>

Ответы [ 4 ]

0 голосов
/ 17 марта 2011

код 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));
    }
}
0 голосов
/ 17 марта 2011

Для:

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 голосов
/ 17 марта 2011
   hand.put(myEnum.someEnum, new ArrayList());

должно быть так:

   map.put(myEnum.someEnum, new ArrayList<myObj>());
0 голосов
/ 17 марта 2011

Кроме того, я предполагаю, что myEnum ссылается на имя класса, а не на экземпляр класса MyEnum и то же самое для myObj. Мы обычно начинаем имена классов с заглавных букв, так что это немного сбивает с толку.

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

Вам необходимо параметризовать ArrayList с помощью ();

...