Помогите мне, ребята. У меня есть следующие:Java: имя экземпляра Enum в качестве аргумента, возможно ли это?
public class ParserException extends Exception {
ParserException(ErrorMessage errorCode) {
super(errorCode.getMessageText());
}
public enum ErrorMessage {
DIVISION_BY_ZERO("Деление на ноль");
private String messageText;
ErrorMessage(String text) {
this.messageText = text;
}
public String getMessageText() {
return messageText;
}
}
}
Я хочу, чтобы передать мое перечисление имя экземпляра в пути, как это, без необходимости использовать кавычки:
throw new ParserException(DIVISION_BY_ZERO);
мне не нравится идея включить что-то в класс, в котором я выбрал указанное исключение. (Уже предложено использовать import static blah.blah.ParserException.ErrorMessage.*;
)
Есть ли какие-либо другие нежные решения для решения подобных задач? Поскольку вы подозреваете, что я буду рад решить проблему, просто добавив пару строк в свой конструктор ParserException.
Любые хорошие идеи? Спасибо.
Зачем использовать имя переименования * String * в качестве параметра вместо самого перечисления? Только усиление в типе безопасности сделало бы это стоящим. ** Edit: ** О, я вижу, вы говорите о переходе в перечисление, а не в String. Ваш вопрос запутан. Пожалуйста, поймите, что имена переменных и строки не эквивалентны, даже не закрываются. Решение заключается в том, что вы сказали, что вам уже сказали - используйте статический импорт или используйте полное имя перечисления. Почему вы отказываетесь от этих рекомендаций? –
«Мне не нравится идея включить что-то в класс, где я выбрал указанное исключение» <- почему? – fge
Один из вариантов - сделать свой внутренний класс enum 'static' и использовать его как' throw new ParserException (ParserException.ErrorMessage.DIVISION_BY_ZERO); 'но так как вы не хотите добавлять две кавычки вокруг' DIVISION_BY_ZERO' и сделать это Строка Я сомневаюсь, что вам понравится это решение. В любом случае это просто вариант ... – Pshemo