java - 使用 Enum 方法调用的值作为注释参数

标签 java enums annotations

我有

enum Operations { 
 OPERATION_NAME("operation/path");    
    private final String path;

    Operations(String path) {
        this.path = path;
    }

    public String path() {
        return path;
    }
}

我想在我的 REST API 方法的注释上使用路径值

  @Path(Operations.OPERATION_NAME.path())
  void operation() {
  }

但是 java 编译器报错

Attribute value must be constant

有没有办法在 java8 中解决这个问题?

我知道我可以有一个带有操作名称的枚举和一堆带有路径的静态字符串字段(静态字符串可以用作 @Path 注释中的属性),但我不喜欢这种方法。

最佳答案

不能在注解参数中使用枚举方法,但可以创建类:

public final class Operations {

    private Operations() {};

    public static final String op1 = "operation/path";
    public static final String op2 = "operation2/path";

    public enum Enum { 

        OPERATION1(op1),
        OPERATION2(op2);

        private final String path;

        Enum(final String path) {
            this.path = path;
        }

        public final String path() {
            return path;
        }
    }

}

不会有重复,你仍然可以像以前一样使用你的枚举,以及注释中的static String literals

关于java - 使用 Enum 方法调用的值作为注释参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45568782/

相关文章:

java - 连接一个本身有构造函数的 Bean

java String 和 StringBuilder

java - 创建额外的菜单选项以转到其他选项

java - 如何在一个类中编写多个枚举类

c++ - 根据枚举成员的值特化模板

java - 如何制作复合主键(java持久化注解)

jakarta-ee - Java EE 中的@Schedule 注解

java - 获取您正在为 android 滑动(onFling)的元素的 View ?

java - 动态加载 Java 枚举类和枚举常量

java - 通过反射找到单元测试中的参数化方法