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
- Crea un nuevo archivo con el nombre
StudentResult.javaen el directorio~/project. - Agrega el siguiente código para crear un enum llamado
StudentResult:
public enum StudentResult {
PASS,
FAIL,
ABSENT
}
Usando Enums
- Crea un nuevo archivo con el nombre
Demo.javaen el directorio~/project. - Agrega el siguiente código para crear una variable del tipo enum
StudentResulty 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);
}
}
- Ejecuta el código usando el siguiente comando en la terminal:
javac Demo.java && java Demo
Usando Enums con Sentencias If-Else
- Agrega el siguiente código para usar el enum
StudentResultcon 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 Sentencias Switch
- Agrega el siguiente código para usar el enum
StudentResultcon 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
- 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
- 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
- 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);
}
}
- Ejecuta el código usando el siguiente comando en la terminal:
javac Demo.java && java Demo
Creando Enums dentro de Clases
- 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());
}
}
- Ejecuta el código usando el siguiente comando en la terminal:
javac Student.java && javac Demo.java && java Student
Usando EnumSet
- 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
- 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.



