Tengo la necesidad de poder almacenar y recuperar enumeraciones de una base de datos SQLite, que he resuelto con el uso combinado de una clase contenedora y enumeraciones, pero creo que está muy mal diseñado .Almacenamiento y recuperación de enumeraciones en SQLite con Java
Cada vez que quiero agregar un nuevo elemento a la lista de enumeraciones, tengo que agregarlo en tres lugares diferentes.
La enumeración debe contener:
- un int (o cadena) para representarla
- una cadena de texto que da más texto sobre la enumeración en sí
- un método para restablecer de alguna manera su estado de la base de datos
Actualmente se implementa como esto:
public class items
{
public enum types {
FOO(0),
BAR(1),
BAZ(2);
private final int _value;
types(int value){_value = value;}
public int value(){return _value;}
}
public static types Get(int i)
{
switch(i)
{
case 0:
return types.FOO;
case 1:
return types.BAR;
case 2:
return types.BAZ;
default:
return null;
}
}
public static String Get(Typer type)
{
switch(type)
{
case FOO:
return "This is foo!";
case BAR:
return "This is bar!";
case BAZ:
return "This is baz!";
default:
return "No good!";
}
}
}
¿Hay una mejor manera de manejar esto?
pero si va a almacenar la enumeración en cadena, no debe cambiar el nombre del valor enum .. cada uno tiene su ventaja y desventaja – yeahman
Supongo que usar ordinal es más arriesgado ya que uno puede agregar fácilmente un nuevo enum escriba en el medio. Pero cambiar de nombre tiene un poco menos de probabilidad. Bueno, eso es lo que siento, podría estar equivocado –
@RahulVerma Simplemente cubra con pruebas si es importante, y sin riesgo. Pero el almacenamiento de un único valor 'int' suele ser mucho más eficiente que una cadena. – kan