如果我的一个枚举常量名长度大于10个字符,如何抛出一个检查异常以防止编译代码?
答案 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
构造函数只能抛出未经检查的异常。