Пожалуйста, сначала исправьте меня, если я ошибаюсь: вы пытаетесь связать каждый цвет со значением int
.
Если это так, то вам нужен ассоциативный массив , который в Java моделируется как Map
. Таким образом, вы можете использовать Map<type, Integer>
для достижения желаемого (предпочтительно EnumMap
, который оптимизирован для использования клавиш Enum
).
// I renamed your "type" to Color
Map<Color, Integer> map = new EnumMap<Color, Integer>(Color.class);
map.put(Color.BLUE, 3);
Однако, если вы действительно хотите использовать массив, вы можете использовать метод ordinal()
ваших констант enum (который возвращает int
, представляющий позицию константы в объявлении enum, начиная с 0):
int[] ints = new int[Color.values().length];
ints[Color.BLUE.ordinal()] = 3;
Если это сопоставление должно быть уникальным для всего вашего приложения (если вам никогда не нужно ассоциировать цвет с более чем одним значением одновременно; другими словами, если это не тот случай, когда какой-то клиент хранит BLUE --> 2
и некоторые другие хранилища BLUE --> 3
), тогда было бы лучше сохранить это значение в самом перечислении:
enum Color {
GREEN, BLUE, BLACK, GRAY;
private int value;
// ...getter and setter for value...
}
Тогда вы можете написать:
Color.BLUE.setValue(8);
А для чтения значений:
for (Color c : Color.values()) {
System.out.println("There are " + c.getValue() + " occurences of " + c);
}