2009-11-24 4 views
1

J'ai une interface qui énumérations plusieurs mettent en œuvre, à savoirRésumé ENUM un type d'attribut d'annotation

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."), 
} 

Maintenant, je veux avoir une annotation personnalisée qui a un type de valeur d'une de ces valeurs enum concrètes, à savoir

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

Mais bien sûr, je ne peux pas retourner une interface ici.

Est-ce que quelqu'un connaît une solution ou une solution de contournement à cela?

Merci d'avance.

Répondre

2

Vous pouvez créer un ENUM supplémentaire qui enveloppe toutes vos MinorCodes valeurs ENUM:

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(); 
} 

Pas assez, mais fonctionne;)

Questions connexes