考虑以下代码
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 ”?