with values recorrer que programacion herencia enum clase java enums

values - que es un enum en java



¿Puedo establecer el valor de inicio enum en Java? (5)

Yo uso la enumeración para hacer algunas constantes:

enum ids {OPEN, CLOSE};

el valor ABIERTO es cero, pero lo quiero como 100. ¿Es posible?


¿Qué hay acerca de usar de esta manera:

public enum HL_COLORS{ YELLOW, ORANGE; public int getColorValue() { switch (this) { case YELLOW: return 0xffffff00; case ORANGE: return 0xffffa500; default://YELLOW return 0xffffff00; } } }

solo hay un método ...

puedes usar el método estático y pasar el parámetro Enum como:

public enum HL_COLORS{ YELLOW, ORANGE; public static int getColorValue(HL_COLORS hl) { switch (hl) { case YELLOW: return 0xffffff00; case ORANGE: return 0xffffa500; default://YELLOW return 0xffffff00; } }

Tenga en cuenta que estas dos formas utilizan menos memoria y más unidades de proceso. No digo que esta sea la mejor manera, pero es solo otro enfoque.


Las enumeraciones Java no son como enums C o C ++, que en realidad son solo etiquetas para enteros.

Las enumeraciones de Java se implementan más como clases, e incluso pueden tener múltiples atributos.

public enum Ids { OPEN(100), CLOSE(200); private final int id; Ids(int id) { this.id = id; } public int getValue() { return id; } }

La gran diferencia es que son seguros, lo que significa que no tiene que preocuparse por asignar una enumeración de COLOR a una variable de TAMAÑO.

Consulte http://docs.oracle.com/javase/tutorial/java/javaOO/enum.html para obtener más información.


Sí. Puede pasar los valores numéricos al constructor para la enumeración, de la siguiente manera:

enum Ids { OPEN(100), CLOSE(200); private int value; private Ids(int value) { this.value = value; } public int getValue() { return value; } }

Consulte la Guía de idiomas de Sun Java para obtener más información.


Si quieres emular la enumeración de C / C ++ (base num y nexts incrementales):

enum ids { OPEN, CLOSE; // private static final int BASE_ORDINAL = 100; public int getCode() { return ordinal() + BASE_ORDINAL; } }; public class TestEnum { public static void main (String... args){ for (ids i : new ids[] { ids.OPEN, ids.CLOSE }) { System.out.println(i.toString() + " " + i.ordinal() + " " + i.getCode()); } } }

OPEN 0 100 CLOSE 1 101


Si usa tipos de enumeración muy grandes, el siguiente puede ser útil;

public enum deneme { UPDATE, UPDATE_FAILED; private static Map<Integer, deneme> ss = new TreeMap<Integer,deneme>(); private static final int START_VALUE = 100; private int value; static { for(int i=0;i<values().length;i++) { values()[i].value = START_VALUE + i; ss.put(values()[i].value, values()[i]); } } public static deneme fromInt(int i) { return ss.get(i); } public int value() { return value; } }