Tal*_* G. 5 java scala constants
我想在我的Scala代码中定义一个值,并在我的Java代码(调用scala)中将此值视为常量(在注释中使用).
例如:
object MyValues {
val a = 5
}
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试在Java注释中使用此值时,它会给出一个错误: java:属性值必须是常量
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface MyJavaAnnotation {
int aValue() default MyValues.a(); // <-- Error
}
Run Code Online (Sandbox Code Playgroud)
像这样调用它也不起作用: MyValues$.MODULE$.a();
我还尝试使用final关键字为val添加前缀而没有成功.
这有解决方法吗?
不,据我所知。作为解决方法,您可以定义一个调用该方法的 Java 常量:
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface MyJavaAnnotation {
int aValue() default A;
static final int A = MyValues.a();
}
Run Code Online (Sandbox Code Playgroud)
我认为它可以在同一个注释中定义,如果不将其移动到某个地方。
| 归档时间: |
|
| 查看次数: |
158 次 |
| 最近记录: |