Как создать статическое перечисление со значением, которое имеет символ дефиса в Java? - PullRequest
9 голосов
/ 22 марта 2010

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

static enum Test{
    employee-id,
    employeeCode
}

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

Ответы [ 4 ]

19 голосов
/ 22 марта 2010

Это невозможно в 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;
}
16 голосов
/ 22 марта 2010

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

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

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

System.out.println(num-ber);

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

1 голос
/ 22 марта 2010

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

0 голосов
/ 22 марта 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...