2010-09-24 12 views
15

W większości przypadków wyliczenie zawierające wszystkie elementy jest pokazane w menu rozwijanym w interfejsie użytkownika. Musimy pokazać tylko 2 z 5 pól w interfejsie użytkownika. Jaki byłby łatwiejszy sposób na pobranie tych danych, w pewien sposób wykorzystując te same funkcje dostępne dla wyliczenia.Jak pobrać podzbiór wyliczenia

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

Mamy wymóg, aby pokazać tylko {czerwony, niebieski} w określonym interfejsie użytkownika?

Odpowiedz

25

Brzmi jak zadanie dla EnumSet:

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

Jeśli enum zawiera kilka metod niestandardowych (np aby wyświetlić Red instesd z 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 ​​(); // wszystkie elementy.

Color.getSubSetOfValues ​​(); // podzbiór