我有 3 个 java 文件:myApp 包中的 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 作为 HelloWorld.scala 迁移到 scala:
object HelloWorld {
@myAnn(name = Constants.WORLD)
def main(args: Array[String]) {
println("Hello " + Constants.WORLD)
}
}
当我尝试编译它时,我得到
错误:注释参数需要是一个常量;找到:Constants.WORLD @myAnn(name = Constants.WORLD)
如果我删除注释,那么 HelloWorld 会按预期编译和执行。
为什么我可以使用 Constants.WORLD 作为来自 java 程序的注释的参数,而不是来自 scala 程序的参数?我可以在 Constants.java 中修改某些内容以允许从 java 或 scala 中使用它吗?我无法修改 MyAnn.java,也无法迁移 Constants.java。