2012-03-29 8 views
8

Tôi có một chú thích tôi không thể thay đổi mà mong đợi hai đối số String.Enum in Annotations

Tôi muốn sử dụng nó như thế này:

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

Đây là cách tôi tưởng tượng thực hiện nó

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

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

này không hoạt động kể từ a hoặc b không thể giải quyết tĩnh .

gì thay thế tôi phải là đẹp hơn hơn:

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

Trả lời

2

Bạn có thể sử dụng lớp bên trong tĩnh để nhóm các chuỗi của mình.

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

Mặc dù câu hỏi của bạn không giống như một câu hỏi nhưng như một tuyên bố, tôi đồng ý với bạn. Bạn không thể sử dụng thành viên enum khi bạn đang xác định chú thích. Chỉ các hằng số "thực", tức là các trường cuối cùng tĩnh và biểu thức hằng số được áp dụng. Vì vậy, không có lựa chọn tốt ngay bây giờ.