2016-10-12 53 views
1

我有一个需要编译时常量String的注解,我想用一个编译时常量int从一个我正在使用的库。所以我落得这样做是这样的:将编译时常量int转换为编译时常量String in Java

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的方法?因为这样做感觉有点奇怪。

回答

1

我认为您现在的解决方案是最好的,因为您正确地确定注解需要“编译时常量”值。 "" + INT_VALUE至少比通过重复库中的值创建冗余性要好,但作为字符串("23"),它是Java语言的一个“很好”功能,可将您的解决方案确定为编译时常量。

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

0

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

+1

但是,不能在注释中直接使用,只能在CONSTANT_STRING初始化中使用。 –

+0

是“私有静态最终字符串”CONSTANT_STRING = String.valueOf(LibraryClass.CONSTANT_INT);“不适用? – Anthony

+0

是的,这将工作,并且是一个正确的答案。但我认为问题创建者要求提供类似@AnnotationThatNeedsString(someCleverCastOf(CONSTANT_INT))的东西。 –

0

我建议

  • 化妆@AnnotationThatNeedsString采取int或
  • 使常数的字符串。您可以在运行时将其解析为int。

例如

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