我有一个需要编译时常量字符串的注释,我想用我正在使用的其中一个库中的编译时常量int初始化它。所以我最终做的就是这样:
public class LibraryClass {
public static int CONSTANT_INT = 0; //Where 0 could be whatever
}
public class MyClass {
private static final String CONSTANT_STRING = "" + LibraryClass.CONSTANT_INT;
@AnnotationThatNeedsString(CONSTANT_STRING)
public void myMethod() {
//Do something
}
}
我的问题是,有没有比使用"" + PRIMITIVE_TO_CONVERT
更好的方法将原语转换为编译时常量字符串?将一个原语“强制转换”为String的一些方法?因为这样做感觉有点奇怪。
答案 0 :(得分:1)
我认为您当前的解决方案是最好的,因为您正确地确定Annotations需要“编译时常量”值。 "" + INT_VALUE
至少比通过重复库中的值创建冗余更好,但是作为String("23"
),并且它是Java语言的“好”特性,以确定您的解决方案为编译 - 时间常数。
如果你能够,你当然也可以改变注释以将int作为值参数,如另一个答案中所建议的那样(但我假设Annotation也来自库?)。
答案 1 :(得分:0)
尝试使用String.valueOf(LibraryClass.CONSTANT_INT);
答案 2 :(得分:0)
我建议
e.g。
public static int CONSTANT_INT = Integer.parseInt(CONSTANT_STRING);