2012-03-29 61 views
8

我有一個註釋,我不能改變哪個需要兩個String參數。Enum in Annotations

我想用這樣的:

@RequestMapping(MyUrls.FOO.a, MyUrls.FOO.b) 

這是我所想象實現它

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

    public String a, b; 
    MyUrls(String a, String b) { 
     this.a = a; 
     this.b = b; 
    } 
} 

這並不是因爲ab工作不能靜態解析。

什麼選擇我有哪些是更好比:

class MyUrls { 
    public static String FOO_A = ""; 
    public static String FOO_B = ""; 
    // ... 
} 

回答

2

您可以使用靜態內部類來分組您的字符串。

class MyUrls { 
    public static final class Foo{ 
     public static final String A = ""; 
     public static final String B = ""; 
     // ... 
    } 
} 
//works as 
MyUrls.Foo.A 
3

雖然你的問題看起來並不像一個問題,但作爲一個聲明,我同意你的看法。 在定義註釋時,不能使用枚舉成員。只有「真實」常量,即靜態最終字段和常量表達式才適用。所以,現在沒有好的選擇。