utilizo la enumeración hacer algunas constantes:¿Puedo establecer el valor de inicio enum en Java?
enum ids {OPEN, CLOSE};
el valor OPEN es cero, pero lo quiero como 100. ¿Es posible?
utilizo la enumeración hacer algunas constantes:¿Puedo establecer el valor de inicio enum en Java?
enum ids {OPEN, CLOSE};
el valor OPEN es cero, pero lo quiero como 100. ¿Es posible?
Las enumeraciones Java no son como enums C o C++, que en realidad son solo etiquetas para enteros.
Las enumeraciones 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 de tipo seguro lo que significa que no tiene que preocuparse por la asignación de una enumeración de color a una variable de tamaño.
Ver http://docs.oracle.com/javase/tutorial/java/javaOO/enum.html para más.
Sí. Puede pasar los valores numéricos para el constructor de la enumeración, así:
enum Ids {
OPEN(100),
CLOSE(200);
private int value;
private Ids(int value) {
this.value = value;
}
public int getValue() {
return value;
}
}
Véase el Sun Java Language Guide para más información.
fresca. ¿Es posible mezclar? Es decir. solo asigne números a los valores Enum elegidos. –
modificador privado es redundante para constructores enum –
Si usa tipos de enumeración muy grandes, el siguiente puede ser útil;
cuál es sobre el uso de esta forma:
public enum HL_COLORS{
YELLOW,
ORANGE;
public int getColorValue() {
switch (this) {
case YELLOW:
return 0xffffff00;
case ORANGE:
return 0xffffa500;
default://YELLOW
return 0xffffff00;
}
}
}
sólo hay un método ..
puede utilizar el método estático y pasar el Enum como parámetro 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 lo hago Digo que esta es la mejor manera, pero es solo otro enfoque.
¿Por qué 'getColorValue()' está sincronizado en el segundo ejemplo? – josaphatv
No tiene sentido ... Lo eliminé del código ... gracias –
Si desea emular enumeración de C/C++ (num base 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
Según su afirmación, sería la mejor práctica usar java para crear una enumeración de enteros secuenciales (similar a una enum de C++), para un índice en una matriz o algo así, escriba: enum Id. { NOMBRE (0), EDAD (1), ALTURA (2), PESO (3); } Gracias, -bn –
Posiblemente, y especialmente si alguna vez serializas los valores integrales en alguna parte. – lavinio
¿puede decirnos cómo usar esta enumeración en una función? –