Java 枚举常量名称长度大于10个字符时引发选中异常?

Java 枚举常量名称长度大于10个字符时引发选中异常?,java,enums,Java,Enums,如果我的枚举常量名称长度超过10个字符,如何抛出检查异常以阻止编译代码?最实用的解决方案可能是使用Java样式检查器,例如。然后使用构建工具,比如Maven,如果样式检查失败,它可以阻止构建成功 这允许您检查所有方式,包括枚举长度。尽管您可能需要为此编写自己的检查程序—听起来有点特殊。您不能在编译时强制执行此类限制,因为Java语言规范没有限制标识符的长度(): 一个变量的名称可以是任何合法的标识符-一个无限长的Unicode字母和数字序列 (注意:类文件格式确实有一个约64K的限制,但它不是J

如果我的枚举常量名称长度超过10个字符,如何抛出检查异常以阻止编译代码?

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


这允许您检查所有方式,包括枚举长度。尽管您可能需要为此编写自己的检查程序—听起来有点特殊。

您不能在编译时强制执行此类限制,因为Java语言规范没有限制标识符的长度():

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

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

如果声明的名称太长,您最多可以在运行时抛出一个
异常
,例如在枚举的构造函数中:

enum Fruit {
    APPLE,
    BANANA,
    STRAWBERRIES;

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

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

您不能在编译时抛出异常。编写自己的编译器:)注释枚举并使用注释处理器检查注释枚举的常量名称。您好,fabian,你能举个例子吗?@talx你自己研究这个话题怎么样?然后,如果你被卡住了,发布一个不同的问题。fabian给出一个这样的例子并不简单。+1 checkstyle允许您定义枚举常量(和其他变量名)必须遵循的格式,包括长度。