gpt4 book ai didi

scala - 不能使用 java 值作为 Scala 函数上的 java 注释的参数

转载 作者:行者123 更新时间:2023-12-01 04:09:50 25 4
gpt4 key购买 nike

我在包 myApp 中有 3 个 java 文件:HW.java、myAnn.java 和 Constants.java。

常量.java:

public final class Constants {
public static final String WORLD ="World";
}

myAnn.java:
public @interface myAnn {
java.lang.String name() default "";
}

硬件.java:
class HW {
@myAnn(name = Constants.WORLD)
public static void main(String[] args){
System.out.println("Hi "+ Constants.WORLD);
}
}

我的应用程序编译并运行良好,如上所示,但我想将 HW.java 迁移到 Scala
HelloWorld.scala:
object HelloWorld {
@myAnn(name = Constants.WORLD)
def main(args: Array[String]) {
println("Hello " + Constants.WORLD)
}
}

当我尝试编译它时,我得到

error: annotation argument needs to be a constant; found: Constants.WORLD @myAnn(name = Constants.WORLD)



如果我删除注释,那么 HelloWorld 会按预期编译和执行。

为什么我可以使用 Constants.WORLD 作为来自 java 程序的注释的参数,而不是来自 Scala 程序的注释?我可以在 Constants.java 中修改某些内容以允许从 java 或 Scala 使用它吗?我无法修改 MyAnn.java,也无法迁移 Constants.java。

最佳答案

这是一个仅在将 java 源文件提供给 Scala 编译器时才会出现的错误,请参阅问题 SI-2764 .该示例在首先使用 javac 编译 java 文件时有效。然后指向 scalac的类路径到生成的类文件。

关于scala - 不能使用 java 值作为 Scala 函数上的 java 注释的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6879884/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com