Как создать статическое перечисление со значением, которое имеет символ дефиса в Java?

как создать статическое перечисление как ниже

static enum Test{
    employee-id,
    employeeCode
}

На данный момент я получаю ошибки.

9
задан Daniel Rikowski 5 March 2011 в 13:27
поделиться

4 ответа

Это невозможно с Java, потому что каждый элемент имеет быть допустимым идентификатором (а допустимые идентификаторы Java не могут содержать дефисы).

Ближайшим вариантом было бы добавить настраиваемое свойство к каждому значению перечисления или переопределить метод toString , чтобы вы могли сделать следующее:

Test.EMPLOYEE_ID.getRealName();    // Returns "employee-id"
Test.EMPLOYEE_CODE.getRealName();  // Returns "employeeCode"

public enum Test
    EMPLOYEE_ID("employee-id"),
    EMPLOYEE_CODE("employeeCode");

    private Test(String realName) {
        this.realName = realName;
    }
    public String getRealName() {
        return realName;
    }
    private final String realName;
}
21
ответ дан 4 December 2019 в 06:19
поделиться

Это не относится к перечислениям. Это относится ко всем идентификаторам в Java: именам классов, именам методов, именам переменных и так далее. Дефисы просто недопустимы. Вы можете найти все допустимые символы в Спецификация языка Java, глава 3.8 «Идентификаторы» .

Чтобы проиллюстрировать проблему:

int num-ber = 5;
int num = 4;
int ber = 3;

System.out.println(num-ber);

Что вы ожидаете здесь произойти?

17
ответ дан 4 December 2019 в 06:19
поделиться

Вы не можете этого сделать. Константы перечисления должны быть допустимыми идентификаторами Java. Допустимые идентификаторы Java не могут содержать - . Вы можете использовать _ , если это приемлемая замена.

2
ответ дан 4 December 2019 в 06:19
поделиться

Вы не можете объявить константу перечисления с дефисом. Если вы вводите дефис в качестве значения перечисления, у вас должен быть метод значения в перечислении, который вы либо используете в его методе toString, либо обращаетесь к этому методу в перечислении, чтобы получить значение дефиса

{ {1}}
0
ответ дан 4 December 2019 в 06:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: