2010-09-24 15 views
15

Nella maggior parte dei casi un'enumerazione contenente tutti gli elementi viene visualizzata in un menu a discesa nell'interfaccia utente. Abbiamo bisogno di mostrare solo 2 campi su 5 nell'interfaccia utente. Quale sarebbe un modo più semplice per recuperare questi dati, sfruttando in qualche modo le stesse funzioni disponibili per un'enumerazione.Come recuperare un sottoinsieme di un'enumerazione

enum Color {RED, GREEN, BLACK, BLUE, YELLOW}; 

Abbiamo l'obbligo di mostrare solo {ROSSO, BLU} in una determinata interfaccia utente?

risposta

25

Suona come un lavoro per EnumSet:

EnumSet<Color> set = EnumSet.of(Color.RED, Color.BLUE); 
1

Se enum contiene alcuni metodi personalizzati (ad esempio, per visualizzare Red instesd di RED)

public enum Color { 
    RED("Red"), GREEN("Green"), BLACK("Black"), BLUE("Blue"), YELLOW("Yellow"); 

    private final String display; 

    private Color(String display) { 
     this.display = display; 
    } 

    @Override 
    public String toString() { 
     return display; 
    } 

    public static EnumSet<Color> getSubSetOfValues() { 
     return EnumSet.of(RED, BLUE); // return Red and Green 
     //return EnumSet.range(GREEN, BLUE); // return Green, Black and Blue 
    } 
} 

Col or.values ​​(); // tutti gli elementi.

Color.getSubSetOfValues ​​(); // sottoinsieme

Problemi correlati