En primer lugar, pido disculpas si este es un duplicado de una pregunta existente. No estaba precisamente seguro de cómo expresar mi pregunta, por lo que puede ser por eso que todavía no he encontrado una respuesta clara. En esencia, me gustaría saber si el siguiente es considerado una buena práctica o si hay una mejor manera de hacer esto:¿Está utilizando una instanciación de objeto como una buena práctica de valor de una entrada enum?
public enum ExampleEnum {
ENTRY_1(new ExampleCodedValue("entry1", "comment1")),
ENTRY_2(new ExampleCodedValue("entry2", "comment2")),
ENTRY_3(new ExampleCodedValue("entry3", "comment3")),
ENTRY_4(new ExampleCodedValue("entry4", "comment4"));
private ExampleCodedValue codedValue;
ExampleEnum(ExampleCodedValue codedValue) {
this.codedValue = codedValue;
}
public ExampleCodedValue getCodedValue() {
return codedValue;
}
}
class ExampleCodedValue {
private final String code;
private final String comment;
ExampleCodedValue(String code, String comment) {
this.code = code;
this.comment = comment;
}
}
+1 Principio de KISS. Por cierto, comúnmente creo enums con campos (como este). Pueden ser notablemente útiles. – Bohemian
La razón principal es que esta enumeración, y otras similares, usan un tipo de datos común de 'ExampleCodedValue'. Entonces, por ejemplo, podrías tener dos enumeraciones, 'Configuración' y' Atributos'. Cada uno consiste en un código y un comentario. Es una simplificación excesiva de mi caso de uso real, pero las dos enumeraciones son distintas en términos de lo que encapsulan. También consideré usar el ejemplo de @ Jeffery y tener un método de acceso que devuelva el tipo 'ExampleCodedValue'. Tal vez esa es una mejor manera de hacerlo? – speedRS
@speedRS Me preguntaba por qué se tomaría tantas molestias para crear un objeto que no proporcionara ninguna funcionalidad adicional. Pero dado que su caso de uso exige tener ese objeto en particular, no hay nada de malo en su ejemplo original. – Jeffrey