パッケージmyAppには、HW.java、myAnn.java、Constants.javaの3つのJavaファイルがあります。
Constants.java:
public final class Constants {
public static final String WORLD ="World";
}
myAnn.java:
public @interface myAnn {
java.lang.String name() default "";
}
HW.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をまだ移行できません。