-1

帮帮我,伙计们。我有以下内容:

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 构造函数中添加几行来解决它。

有什么好主意吗?谢谢。

4

2 回答 2

2

好吧,如果你添加你的导入是可能的:

import static complete.package.of.ErrorMessage.*;

这意味着在代码中,ErrorMessage.FOOFOO将是相同的。

注意:Java 5+,但今天没有人使用 Java 4-,对吧?:p

注意2:你也可以.toString()在枚举中覆盖,只需让它返回messageText

于 2013-06-14T21:29:38.887 回答
0

由于使用内部枚举实例需要笨拙的语法,我会让你的枚举成为一个顶级类(在它自己的 java 文件中)如果你这样做,使用它变得干净和简单。

虽然我更喜欢避免类膨胀,但在这种情况下我允许这样做,因为一切都更简单,这很好。

谁知道……有一天你可能想在别处使用这个类。

于 2013-06-15T01:24:52.333 回答