Если у вас есть этот код типа перечисления и вы получите эту ошибку компиляции.

enter image description here

Я понимаю, что Color.RED - это int, но я не уверен, почему я получаю сообщение об ошибке?

 enum Direction {

    NORTH(Color.RED), WEST(Color.BLUE), EAST(Color.BLACK), SOUTH(
            Color.GREEN);

    Direction(Color c) {
        color = c;
    }

    private Color color;

    public static Direction fromName(String name) {
        for (Direction d : Direction.values()) {
            if (d.name().equalsIgnoreCase(name)) {
                return d;
            }
        }
        return NORTH;
    }

    public Color getColor() {
        return color;

}}

Спасибо за помощь заранее.

0
iqueqiorio 5 Дек 2014 в 00:38

2 ответа

Лучший ответ
public enum Direction {

NORTH(Color.RED), WEST(Color.BLUE), EAST(Color.BLACK), SOUTH(
        Color.GREEN);

Direction(int c) {
    color = c;
}
private int color;


public int get() {
    return color;
} 
}

И чтобы получить цвет в формате int, используйте:

Direction.SOUTH.get();

Который вернет значение int для цвета "Зеленый"

3
Carnal 4 Дек 2014 в 21:53

В своем конструкторе вы объявляете, что параметр должен быть экземпляром класса Color. Например, Color.RED возвращает целое число.

Так что вы бы либо

  1. необходимо заменить Color.RED и т. д. на объекты Color

ИЛИ

  1. измените перечисление, чтобы сохранить int.
2
Thorben 4 Дек 2014 в 21:42