2009-11-24 3 views
1

У меня есть интерфейс, который несколько перечислений реализуют, т.е.Аннотация перечисления типа атрибута аннотации

public interface MinorCodes { 
    public abstract int code(); 
    public abstract String description(); 
} 

public enum IdentityMinorCodes implements MinorCodes { 
    IDENTITY_UPLOAD_PICTURE_CODE(1, "Error while trying to upload a picture."), 
} 

Теперь я хочу иметь собственную аннотацию, которая имеет тип значения одного из этих конкретных значений перечислений, т.е.

public @interface PokenService { 
    MinorCodes[] exceptions(); 
} 

Но, конечно, я не могу вернуть интерфейс здесь.

Кто-нибудь знает какое-либо решение или обходное решение?

Заранее спасибо.

ответ

2

Вы можете создать дополнительное перечисление, который оборачивает все MinorCodes значения перечислений:

public enum MinorCodesWrapper { 
    IDENTITY_UPLOAD_PICTURE_CODE(IdentityMinorCodes.IDENTITY_UPLOAD_PICTURE_CODE), 
    SOME_CODE(AnotherMinorCodes.SOME_CODE); 

    private final MinorCodes _wrapped; 

    MinorCodesWrapper(MinorCodes wrapped) { 
     _wrapped = wrapped; 
    } 

    public MinorCodes getWrapped() { 
     return _wrapped; 
    } 
} 

public @interface PokenService { 
    MinorCodesWrapper[] exceptions(); 
} 

не очень, но работает;)

Смежные вопросы