Declarar Enum en Java

Muhammad Zeeshan 12 octubre 2023
  1. Propósito de Enums en Java
  2. Se requiere un int
  3. No se requiere int
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

  1. 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.
  2. En Java, las enumeraciones se pueden utilizar como entrada en las instrucciones switch, 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

  1. 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.
  2. Cuando no necesariamente tenga que hacerlo, evite combinar un número entero con una enumeración en su código.
Muhammad Zeeshan avatar Muhammad Zeeshan avatar

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

Artículo relacionado - Java Enum