为了账号安全,请及时绑定邮箱和手机立即绑定

有什么办法可以避免这种“属性值必须是常量”错误?

有什么办法可以避免这种“属性值必须是常量”错误?

婷婷同学_ 2021-09-12 14:29:44
我们已经构建了一个注释,用于验证方法的输入。像这样的东西:@InputValidation(paramName = "foo", regularExpression = RegularExpressionConstants.FOO_REG_EX)我们的RegularExpressionConstants类加载了不同的字符串常量,它们都代表不同的正则表达式。这个类开始看起来很乱,所以我开始尝试用一些方法来整理它,使它更容易阅读等等。所以这个类现在看起来像这样:public static final String FOO_REG_EX = alphanumericWithRange(1, 16);public static final String BAR_REG_EX = alphanumericWithRange(2,4);private static String alphanumericWithRange(int lowerLimit, int upperLimit) {    "[a-zA-Z0-9]{" + lowerLimit + "," + upperLimit + "}";}RegularExpressionConstants 类可以编译,但注释不再编译。错误是Attribute value must be constant。在查看了 StackOverflow 上的一些相关问题后,我明白了为什么会发生这种情况。我主要想知道是否有什么方法可以在常量类中实现我想要的整洁而不导致这个问题?还是我只需要处理很多凌乱的常量?
查看完整描述

2 回答

?
守候你守候我

TA贡献1802条经验 获得超10个赞

除非您遵循ernest 的建议并重构代码,否则您根本做不到。您的案例中缺少的部分是JSL(编译时常量是什么)的强制执行

用常量表达式初始化

调用方法根本不是;即使您可以判断这是一个常量,编译器也不能也不会。


查看完整回答
反对 回复 2021-09-12
  • 2 回答
  • 0 关注
  • 184 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号