我有
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/