加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

有没有办法将scala值视为java中的常量

发布时间:2020-12-16 18:30:37 所属栏目:安全 来源:网络整理
导读:我想在我的 Scala代码中定义一个值,并在我的 Java代码(调用scala)中将此值视为常量(在注释中使用). 例如: object MyValues { val a = 5} 但是,当我尝试在Java注释中使用此值时,它会给出一个错误: java:属性值必须是常量 @Target(ElementType.TYPE)@Retent
我想在我的 Scala代码中定义一个值,并在我的 Java代码(调用scala)中将此值视为常量(在注释中使用).

例如:

object MyValues {
   val a = 5
}

但是,当我尝试在Java注释中使用此值时,它会给出一个错误:
java:属性值必须是常量

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface MyJavaAnnotation {
   int aValue() default MyValues.a(); // <-- Error
}

像这样调用它也不起作用: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();
}

我认为它可以在同一个注释中定义,如果不在某个地方移动它.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读