Introdução
Neste laboratório, você aprenderá sobre enums em Java. Enums são um tipo de dado especial em Java que nos permite definir um conjunto fixo de constantes. Você aprenderá como criar, usar e manipular enums em Java.
Criando um Enum
- Crie um novo arquivo com o nome
StudentResult.javano diretório~/project. - Adicione o seguinte código para criar um enum chamado
StudentResult:
public enum StudentResult {
PASS,
FAIL,
ABSENT
}
Usando Enums
- Crie um novo arquivo com o nome
Demo.javano diretório~/project. - Adicione o seguinte código para criar uma variável do tipo enum
StudentResulte usar seus 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);
}
}
- Execute o código usando o seguinte comando no terminal:
javac Demo.java && java Demo
Usando Enums com Declarações If-Else
- Adicione o seguinte código para usar o enum
StudentResultcom declarações 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 com Declarações Switch
- Adicione o seguinte código para usar o enum
StudentResultcom declarações 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
- Adicione o seguinte código para iterar sobre o 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 o Método toString() de Enums
- Adicione o seguinte código para usar o método
toString()de 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();
}
}
}
Criando Enums a partir de Strings
- Adicione o seguinte código para criar enums a partir de strings:
public class Demo {
public static void main(String[] args) {
String resultStr = "FAIL";
StudentResult result = StudentResult.valueOf(resultStr);
System.out.print("Enum from String: " + result);
}
}
- Execute o código usando o seguinte comando no terminal:
javac Demo.java && java Demo
Criando Enums Dentro de Classes
- Adicione o seguinte código para criar um enum dentro de uma classe e usá-lo:
public class Student {
String name;
StudentResult result;
// Defining an enum type
enum StudentResult {
PASS,
FAIL,
ABSENT;
}
// Constructor
Student(String s, StudentResult sr) {
name = s;
result = sr;
}
// Enum if-else method
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.");
}
// Enum method
public boolean wasAbsent() {
if (this.result == StudentResult.ABSENT)
return true;
else
return false;
}
// Main method
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());
}
}
- Execute o código usando o seguinte comando no terminal:
javac Student.java && javac Demo.java && java Student
Usando EnumSet
- Adicione o seguinte 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
- Adicione o seguinte 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());
}
}
Resumo
Neste laboratório, você aprendeu como criar um enum, usá-lo com as instruções if-else e switch, iterar sobre um enum, usar seu método toString(), criar enums a partir de strings, criar um enum dentro de uma classe, usar EnumSet para armazenar eficientemente constantes de enum, usar EnumMaps para armazenar pares chave-valor de enums e usar métodos concretos e abstratos em enums. Você também aprendeu que enums são usados para definir uma coleção de valores constantes e que eles aumentam a segurança de tipos em Java.



