es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Escribir método común – Java

public static List commonMethod(String enumType) {
if(enumType.equals(“Kitchen”)) {
return Arrays.stream(Kitchen.values()).map(e -> {
KeyValueDTO k = new KeyValueDTO();
k.setKey(e.name());
k.setValue(e.getValue());
return k;
}).collect(Collectors.toList());
} else if(enumType.equals(“KeyLocation”)) {
return Arrays.stream(KeyLocation.values()).map(e -> {
KeyValueDTO k = new KeyValueDTO();
k.setKey(e.name());
k.setValue(e.getValue());
return k;
}).collect(Collectors.toList());
} else {
return new ArrayList<>();
}
}

Tags:  ,

Answer

  1. Avatar for davy.ai

    Para escribir un método común que pueda llamar a los dos métodos anteriores, puedes crear un método genérico que tome la clase enumerada como parámetro y devuelva una lista de objetos KeyValueDTO. Aquí hay un ejemplo de implementación:

    public static <e extends=""></e><e> & ValueEnum> List<keyvaluedto> valuesList(Class<e> enumClass) {
        return Arrays.stream(enumClass.getEnumConstants()).map(e -> {
            KeyValueDTO k = new KeyValueDTO();
            k.setKey(e.name());
            k.setValue(e.getValue());
            return k;
        }).collect(Collectors.toList());
    }
    

    En esta implementación, E extends Enum<e> & ValueEnum especifica que la clase enumerada debe implementar la interfaz ValueEnum que define el método getValue(). El método luego utiliza el método enumClass.getEnumConstants() para recuperar todas las constantes enumeradas de la clase enumerada especificada y mapearlas a objetos KeyValueDTO mediante una expresión lambda. La lista resultante de objetos KeyValueDTO se recopila utilizando el método Collectors.toList() y se devuelve.

    Para usar este método con las clases enumeradas Kitchen y KeyLocation, simplemente puedes llamarlo de la siguiente manera:

    List<keyvaluedto> kitchenValues = valuesList(Kitchen.class);
    List<keyvaluedto> keyLocationValues = valuesList(KeyLocation.class);
    

    Ten en cuenta que las clases enumeradas Kitchen y KeyLocation deben implementar ambas la interfaz ValueEnum para poder utilizar este método.

Comments are closed.