2014-05-13 13 views
8

voglio creare un enum e dichiarare diverse costanti all'interno di esso per uso interno ...Dichiarare le costanti all'interno di enum

public enum SearchType { 

    static final String TEXT = "text"; 
    static final String BOOLEAN = "boolean"; 

    STARTS_WITH(TEXT), 
    ENDS_WITH(TEXT), 
    CONTAINS(BOOLEAN), 
    WILDCARD(TEXT), 
    REGEXP(TEXT), 
    RANGE(TEXT) 


    private String searchType; 

    private SearchType(String type) { 
     searchType = type; 
    } 

} 

purtroppo non può essere fatto in questo modo. La soluzione migliore mi è venuta in mente finora è quella di dichiarare un'interfaccia nidificato per memorizzare le costanti ...

public enum SearchType { 

    STARTS_WITH(Categories.TEXT), 
    ENDS_WITH(Categories.TEXT), 
    CONTAINS(Categories.BOOLEAN), 
    WILDCARD(Categories.TEXT), 
    REGEXP(Categories.TEXT), 
    RANGE(Categories.TEXT) 


    interface Categories{ 
     static final String TEXT = "text"; 
     static final String BOOLEAN = "boolean"; 
    } 

    private String searchType; 

    private SearchType(String type) { 
     searchType = type; 
    } 

} 

quindi mi chiedo se c'è un modo migliore per farlo?

risposta

8

Vorrei utilizzare anche enum per Categories. Se lo metti in una classe di alto livello, sembrerà naturale.

È necessario definire i valori enum prima di qualsiasi altra costante.

AFAIK Questo è fatto per semplificare la sintassi. Hai i valori enum prima con una sintassi speciale semplificata, seguita dalle costanti che definisci. La necessità di questo è più ovvia quando inizi a scavalcare metodi nelle tue costanti.

+0

Grazie! Funziona anche come enumerazione annidata (almeno compila) –

Problemi correlati