当枚举常量名称长度大于10个字符时,抛出检查异常?

时间:2014-09-29 12:09:55

标签: java enums

如果我的一个枚举常量名长度大于10个字符,如何抛出一个检查异常以防止编译代码?

2 个答案:

答案 0 :(得分:2)

最实用的解决方案可能是使用Java样式检查器,例如Checkstyle。然后使用构建工具,例如Maven,如果样式检查失败,它可以阻止构建成功。

这允许您检查所有方式,包括枚举长度。虽然您可能需要为此编写自己的检查程序 - 但这听起来有点具体。

答案 1 :(得分:0)

您无法在编译期间强制执行此类限制,因为Java语言规范不限制标识符的长度(source):

  

变量的名称可以是任何合法的标识符 - Unicode字母和数字的无限长度序列......

(注意:类文件格式确实构成了一个大约64K的限制,但它不是JLS限制。)

如果声明的名称太长,你可以做的最多就是在运行时抛出Exception,例如在枚举的构造函数中:

enum Fruit {
    APPLE,
    BANANA,
    STRAWBERRIES;

    private Fruit() {
        if (name().length()>10)
            throw new RuntimeException("Too long name: " + name());
    }
}

另请注意,Enum构造函数只能抛出未经检查的异常。