1

考虑以下代码

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 ”?

4

0 回答 0