帮助我们。我有以下内容:
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构造函数中添加几行来解决它。
有什么好主意吗? THX。
答案 0 :(得分:2)
嗯,如果你添加你的导入就可以了:
import static complete.package.of.ErrorMessage.*;
这意味着在代码中,ErrorMessage.FOO
和FOO
将是相同的。
注意:Java 5+,但今天没有人使用Java 4-,对吧? :P
注意2:您也可以在枚举中覆盖.toString()
,只需返回messageText
答案 1 :(得分:0)
由于使用内部枚举实例需要笨拙的语法,我会让你的枚举成为顶级类(在自己的java文件中) 如果你这样做,使用它会变得干净简单。
虽然我更喜欢避免阶级臃肿,但在这种情况下我允许它,因为一切都比较简单,这很好。
谁知道......总有一天你可能想在其他地方使用这个课程。