Fundamentos de los Enum en Java

JavaJavaBeginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

En este laboratorio, aprenderás sobre los enum en Java. Los enum son un tipo de datos especial en Java que nos permite definir un conjunto fijo de constantes. Aprenderás cómo crear, usar y manipular enum en Java.

Creando un enum

  1. Crea un nuevo archivo con el nombre StudentResult.java en el directorio ~/project.
  2. Agrega el siguiente código para crear un enum llamado StudentResult:
public enum StudentResult {
    PASS,
    FAIL,
    ABSENT
}

Usando enums

  1. Crea un nuevo archivo con el nombre Demo.java en el directorio ~/project.
  2. Agrega el siguiente código para crear una variable del tipo enum StudentResult y usar sus valores:
public class Demo {
    public static void main(String[] args) {
        StudentResult result1 = StudentResult.ABSENT;
        StudentResult result2 = StudentResult.FAIL;
        StudentResult result3 = StudentResult.PASS;

        System.out.println(result1);
        System.out.println(result2);
        System.out.println(result3);
    }
}
  1. Ejecuta el código usando el siguiente comando en la terminal:
javac Demo.java && java Demo

Usando enums con instrucciones if-else

  1. Agrega el siguiente código para usar el enum StudentResult con instrucciones if-else:
public class Demo {
    public static void main(String[] args) {
        StudentResult result = StudentResult.FAIL;

        if(result == StudentResult.ABSENT)
            System.out.println("The student was absent for the exam.");

        else if(result == StudentResult.PASS)
            System.out.println("The student passed the exam.");

        else if(result == StudentResult.FAIL)
            System.out.println("The student failed the exam.");
    }
}

Usando enums con instrucciones switch

  1. Agrega el siguiente código para usar el enum StudentResult con instrucciones switch:
public class Demo {
    public static void main(String[] args) {
        StudentResult result = StudentResult.FAIL;

        switch(result) {
            case ABSENT : System.out.println("The Student was absent for the exam.");
            break;

            case PASS : System.out.println("The Student passed the exam.");
            break;

            case FAIL : System.out.println("The Student failed the exam.");
            break;
        }
    }
}

Iterando sobre enums

  1. Agrega el siguiente código para iterar sobre el enum StudentResult:
public class Demo {
    public static void main(String[] args) {
        StudentResult[] resultArr = StudentResult.values();

        for(StudentResult sr : resultArr) {
            System.out.println(sr + " at index " + sr.ordinal());
        }
    }
}

Usando el método toString() de los enums

  1. Agrega el siguiente código para usar el método toString() de los enums:
public class Demo {
    public static void main(String[] args) {
        for(StudentResult sr : StudentResult.values()) {
            String resultStr = sr.toString();
            System.out.println("Uppercase: " + resultStr);
            System.out.println("Lowercase: " + resultStr.toLowerCase());
            System.out.println();
        }
    }
}

Creando enums a partir de cadenas

  1. Agrega el siguiente código para crear enums a partir de cadenas:
public class Demo {
    public static void main(String[] args) {
        String resultStr = "FAIL";
        StudentResult result = StudentResult.valueOf(resultStr);
        System.out.print("Enum from String: " + result);
    }
}
  1. Ejecuta el código usando el siguiente comando en la terminal:
javac Demo.java && java Demo

Creando enums dentro de clases

  1. Agrega el siguiente código para crear un enum dentro de una clase y usarlo:
public class Student {
    String name;
    StudentResult result;

    // Definiendo un tipo de enum
    enum StudentResult {
        PASS,
        FAIL,
        ABSENT;
    }

    // Constructor
    Student(String s, StudentResult sr) {
        name = s;
        result = sr;
    }

    // Método if-else del enum
    public void printResult() {
        if (this.result == StudentResult.ABSENT)
            System.out.println(this.name + " was absent for the exam.");

        else if (this.result == StudentResult.PASS)
            System.out.println(this.name + " passed the exam.");

        else
            System.out.println(this.name + " failed the exam.");
    }

    // Método del enum
    public boolean wasAbsent() {
        if (this.result == StudentResult.ABSENT)
            return true;
        else
            return false;
    }

    // Método principal
    public static void main(String[] args) {
        Student s1 = new Student("Justin", StudentResult.ABSENT);
        Student s2 = new Student("Jessica", StudentResult.PASS);

        s1.printResult();
        s2.printResult();

        System.out.println("Student s1 was absent: " + s1.wasAbsent());
    }
}
  1. Ejecuta el código usando el siguiente comando en la terminal:
javac Student.java && javac Demo.java && java Student

Usando EnumSet

  1. Agrega el siguiente código para usar EnumSet:
import java.util.EnumSet;

enum StudentResult {
    PASS,
    FAIL,
    ABSENT;
}

public class Demo {
    public static void main(String[] args) {
        EnumSet<StudentResult> resultSet1 = EnumSet.of(StudentResult.FAIL, StudentResult.PASS);
        EnumSet<StudentResult> resultSet2 = EnumSet.allOf(StudentResult.class);

        System.out.println("Enum Set-1: " + resultSet1);
        System.out.print("Enum Set-2: " + resultSet2);
    }
}

Usando EnumMaps

  1. Agrega el siguiente código para usar EnumMaps:
import java.util.EnumMap;
import java.util.Map;

enum StudentResult {
    PASS,
    FAIL,
    ABSENT;
}

public class Demo {
    public static void main(String[] args) {
        EnumMap<StudentResult, String> resultMap = new EnumMap<>(StudentResult.class);
        resultMap.put(StudentResult.PASS, "Student Passed the exam");
        resultMap.put(StudentResult.FAIL, "Student Failed the exam");
        resultMap.put(StudentResult.ABSENT, "Student was absent for the exam");

        for (Map.Entry<StudentResult, String> e : resultMap.entrySet())
            System.out.println(e.getKey() + " --> " + e.getValue());
    }
}

Resumen

En este laboratorio, aprendiste cómo crear un enum, usarlo con declaraciones if-else y switch, iterar sobre un enum, usar su método toString(), crear enums a partir de cadenas, crear un enum dentro de una clase, usar EnumSet para almacenar eficientemente constantes de enum, usar EnumMaps para almacenar pares clave-valor de enums y usar métodos concretos y abstractos en enums. También aprendiste que los enums se usan para definir una colección de valores constantes y que aumentan la seguridad tipada en Java.