次のコードを検討してください
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
@interface Auditable {
public String value();
}
class Order {
public static final String NAME = "ORDER";
}
public class TestAnnotations {
@Auditable(Order.NAME)
public void testMethod(Order Order) {
}
public static void main(String[] args) {
}
}
エラーでコンパイルに失敗する
java: ....\TestAnnotations.java:28: 属性値は定数でなければなりません
ただし、testMethodのパラメーター名を変更すると
public void testMethod( Order o )
コンパイルします。
注釈にあるようです
@Auditable(Order.NAME)
Order 型の代わりに仮パラメータが考慮されます。ただし、注釈が処理されるときにメソッドパラメーターがコンテキストにあるという参照をドキュメントで見つけることができませんでした。
Order.NAMEがパラメータ(インスタンス)「Order 」ではなくタイプ「 Order 」を参照するように指定できますか?