2010-09-24 7 views
15

La mayoría de las veces se muestra una enumeración que contiene todos los elementos en un menú desplegable en la interfaz de usuario. Tenemos la necesidad de mostrar solo 2 de 5 campos en la interfaz de usuario. ¿Cuál sería una forma más fácil de obtener estos datos, de alguna manera aprovechando las mismas funciones disponibles para una enumeración?Cómo recuperar un subconjunto de una enumeración

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

Tenemos el requisito de mostrar solo {ROJO, AZUL} en una determinada interfaz de usuario?

Respuesta

25

Suena como un trabajo para EnumSet:

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

Si enumeración contiene algunos métodos personalizados (por ejemplo, para mostrar Red instesd de 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 ​​(); // todos los elementos.

Color.getSubSetOfValues ​​(); // subconjunto

Cuestiones relacionadas