在Java中将compile-time-constant int转换为compile-time-constant String

时间:2016-10-12 07:34:49

标签: java type-conversion compile-time-constant

我有一个需要编译时常量字符串的注释,我想用我正在使用的其中一个库中的编译时常量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的一些方法?因为这样做感觉有点奇怪。

3 个答案:

答案 0 :(得分:1)

我认为您当前的解决方案是最好的,因为您正确地确定Annotations需要“编译时常量”值。 "" + INT_VALUE至少比通过重复库中的值创建冗余更好,但是作为String("23"),并且它是Java语言的“好”特性,以确定您的解决方案为编译 - 时间常数。

如果你能够,你当然也可以改变注释以将int作为值参数,如另一个答案中所建议的那样(但我假设Annotation也来自库?)。

答案 1 :(得分:0)

尝试使用String.valueOf(LibraryClass.CONSTANT_INT);

答案 2 :(得分:0)

我建议

  • make @AnnotationThatNeedsString采用int或
  • 使常量为String。您可以在运行时将其解析为int。

e.g。

public static int CONSTANT_INT = Integer.parseInt(CONSTANT_STRING);