Enum in Annotations

Joh*_*erg 8 java enums static annotations

我有一个我无法改变的注释,它需要两个String参数.

我想像这样使用它:

@RequestMapping( MyUrls.FOO.a, MyUrls.FOO.b )
Run Code Online (Sandbox Code Playgroud)

这就是我想象的实现方式

public enum MyUrls {
    FOO("a", "b"), 
    BAR("c", "d");

    public String a, b;
    MyUrls(String a, String b) {
        this.a = a;
        this.b = b;
    }
}
Run Code Online (Sandbox Code Playgroud)

这不起作用,因为ab不能静态解决.

我有哪些替代品比以下更好:

class MyUrls {
    public static String FOO_A = "";
    public static String FOO_B = "";
    // ...
}
Run Code Online (Sandbox Code Playgroud)

jos*_*efx 2

您可以使用静态内部类对字符串进行分组。

class MyUrls {
    public static final class Foo{
       public static final String A = "";
       public static final String B = "";
       // ...
    }
}
//works as
MyUrls.Foo.A
Run Code Online (Sandbox Code Playgroud)