[英]Converting a numeric constant to a constant string expression
我的应用程序中的实体类声明了一个数字常量,如
public static final int MAX_VALUE = 999;
此常量已在应用程序的不同部分中使用。
现在我想在参数注释中的宁静服务中使用这个常量。 问题是注解@DefaultValue需要一个字符串而不是一个int。 所以我尝试使用String.valueOf
来获取字符串
@DefaultValue(String.valueOf(PDCRuleMapping.MAX_VALUE)) final int upperBound,
但它不会编译,因为
注释属性 DefaultValue.value 的值必须是常量表达式
我可以重用我的数字常量以某种方式获得一个常量字符串表达式,还是我必须写"999"
?
到目前为止,唯一对我有用的解决方法是定义一个 String 常量,如下所示:
public static final String MAX_VALUE_AS_STRING = "" + MAX_VALUE;
@DefaultValue(MAX_VALUE_AS_STRING) final int upperBound;
或者,您可以直接在注释中使用字符串连接:
@DefaultValue("" + MAX_VALUE) final int upperBound;
请记住,此上下文中所需的常量表达式不允许方法调用,仅允许运算符。
我认为你只有两个选择:
@DefaultValue("999")
或声明一个字符串常量:
public static final int MAX_VALUE = 999; private static final String MAX_VALUE_STRING = "" + MAX_VALUE; @DefaultValue(MAX_VALUE_STRING)
如果您在注释中使用该值的唯一地方是在一个类中,您可能希望在该类中将字符串常量声明为私有。
基于String
类型的第一个常量定义一个新常量,并在注释中使用该常量。
public static final int MAX_VALUE = 999;
public static final String MAX_VALUE_AS_STRING = String.valueOf(MAX_VALUE);
然后您可以拥有以下内容,而无需复制最大值的值:
@DefaultValue(PDCRuleMapping.MAX_VALUE_AS_STRING) final int upperBound;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.