Declarar Enum en Java
Declarar una enumeración
para un DownloadType
en Java será el tema de discusión en este artículo. Empecemos por ver el propósito de las enumeraciones
.
Propósito de Enums
en Java
- Las enumeraciones se utilizan para que una colección de objetos pueda mantenerse como constantes dentro de un programa sin necesidad de depender de un valor externo, como un
entero
. - En Java, las
enumeraciones
se pueden utilizar como entrada en las instruccionesswitch
, y se pueden comparar de forma segura mediante el operador==
o de igualdad, entre otros métodos de comparación.
Debido a que las enumeraciones
son esencialmente objetos de su tipo y no primitivos, no puede evitar tener que llamar a un método o usar un .value
para extraer el valor de una enumeración
si necesita hacerlo.
Para empezar, tenemos que preguntarnos si se requiere o no un int
. Entonces habrá dos resultados posibles, que veremos en la siguiente sección.
Se requiere un int
Cuando desea un número entero, está dispuesto a arriesgarse a perder la seguridad de tipos y la posibilidad de que los usuarios envíen información no válida a su API. También puede declarar las siguientes constantes como números enteros.
Haga que el constructor sea privado
cuando solo tenga miembros estáticos y desee simular una clase estática en Java.
public final class DownloadType {
public static final int audio = 0;
public static final int video = 1;
public static final int audio_and_video = 2;
private DownloadType() {}
}
Dado que la función .ordinal()
está disponible independientemente de si el campo de valor está presente, la enumeración
podría definirse como:
enum DownloadType { audio, video, audio_and_video }
Para obtener el número correspondiente a un valor enum
, utilice la función .ordinal()
. A cada valor enumerado se le asigna automáticamente un número único que comienza con cero y aumenta en uno para cada valor sucesivo en la misma secuencia declarada.
DownloadType.audio_and_video.ordinal();
No se requiere int
El valor entero de una enumeración
no siempre es fiable. Utilice el valor en sí mismo en su lugar.
En los casos en que un número entero asociado no sea necesario, intente esto en su lugar:
private enum DownloadType { audio, video, audio_and_video }
DownloadType dt = MyObj.getDownloadType();
if (dt == DownloadType.audio) {
}
Puede escribir su lógica en el cuerpo switch
y if()
para realizar acciones. Además, puede utilizar la instrucción switch
en lugar de la condición if()
.
private enum DownloadType { audio, video, audio_and_video }
DownloadType dt = MyObj.getDownloadType();
switch (dt) {
case audio:
break;
case video:
break;
case audio_and_video:
break;
}
Buenas practicas
- Comprometerá la seguridad de tipo de su programa si usa constantes enteras en lugar de constantes de enumeración. Por lo tanto, trate de evitar hacerlo.
- Cuando no necesariamente tenga que hacerlo, evite combinar un número entero con una
enumeración
en su código.
I have been working as a Flutter app developer for a year now. Firebase and SQLite have been crucial in the development of my android apps. I have experience with C#, Windows Form Based C#, C, Java, PHP on WampServer, and HTML/CSS on MYSQL, and I have authored articles on their theory and issue solving. I'm a senior in an undergraduate program for a bachelor's degree in Information Technology.
LinkedIn