Einführung
In diesem Lab werden Sie über Enums in Java lernen. Enums sind ein spezieller Datentyp in Java, der uns ermöglicht, eine feste Menge von Konstanten zu definieren. Sie werden lernen, wie man Enums in Java erstellt, verwendet und manipuliert.
Erstellen eines Enums
- Erstellen Sie in das Verzeichnis
~/projecteine neue Datei mit dem NamenStudentResult.java. - Fügen Sie den folgenden Code hinzu, um ein Enum namens
StudentResultzu erstellen:
public enum StudentResult {
PASS,
FAIL,
ABSENT
}
Verwenden von Enums
- Erstellen Sie in das Verzeichnis
~/projecteine neue Datei mit dem NamenDemo.java. - Fügen Sie den folgenden Code hinzu, um eine Variable vom Typ des
StudentResult-Enums zu erstellen und seine Werte zu verwenden:
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);
}
}
- Führen Sie den Code mit dem folgenden Befehl in der Konsole aus:
javac Demo.java && java Demo
Verwenden von Enums mit If-Else-Anweisungen
- Fügen Sie den folgenden Code hinzu, um das
StudentResult-Enum mit If-Else-Anweisungen zu verwenden:
public class Demo {
public static void main(String[] args) {
StudentResult result = StudentResult.FAIL;
if(result == StudentResult.ABSENT)
System.out.println("Der Schüler war für die Prüfung abwesend.");
else if(result == StudentResult.PASS)
System.out.println("Der Schüler hat die Prüfung bestanden.");
else if(result == StudentResult.FAIL)
System.out.println("Der Schüler hat die Prüfung durchgefallen.");
}
}
Verwenden von Enums mit Switch-Anweisungen
- Fügen Sie den folgenden Code hinzu, um das
StudentResult-Enum mit Switch-Anweisungen zu verwenden:
public class Demo {
public static void main(String[] args) {
StudentResult result = StudentResult.FAIL;
switch(result) {
case ABSENT : System.out.println("Der Schüler war für die Prüfung abwesend.");
break;
case PASS : System.out.println("Der Schüler hat die Prüfung bestanden.");
break;
case FAIL : System.out.println("Der Schüler hat die Prüfung durchgefallen.");
break;
}
}
}
Iterieren über Enums
- Fügen Sie den folgenden Code hinzu, um über das
StudentResult-Enum zu iterieren:
public class Demo {
public static void main(String[] args) {
StudentResult[] resultArr = StudentResult.values();
for(StudentResult sr : resultArr) {
System.out.println(sr + " an Index " + sr.ordinal());
}
}
}
Verwenden der toString()-Methode von Enums
- Fügen Sie den folgenden Code hinzu, um die
toString()-Methode von Enums zu verwenden:
public class Demo {
public static void main(String[] args) {
for(StudentResult sr : StudentResult.values()) {
String resultStr = sr.toString();
System.out.println("Großbuchstaben: " + resultStr);
System.out.println("Kleinbuchstaben: " + resultStr.toLowerCase());
System.out.println();
}
}
}
Erstellen von Enums aus Strings
- Fügen Sie den folgenden Code hinzu, um Enums aus Strings zu erstellen:
public class Demo {
public static void main(String[] args) {
String resultStr = "FAIL";
StudentResult result = StudentResult.valueOf(resultStr);
System.out.print("Enum aus String: " + result);
}
}
- Führen Sie den Code mit dem folgenden Befehl in der Konsole aus:
javac Demo.java && java Demo
Erstellen von Enums innerhalb von Klassen
- Fügen Sie den folgenden Code hinzu, um ein Enum innerhalb einer Klasse zu erstellen und zu verwenden:
public class Student {
String name;
StudentResult result;
// Definiert einen Enum-Typ
enum StudentResult {
PASS,
FAIL,
ABSENT;
}
// Konstruktor
Student(String s, StudentResult sr) {
name = s;
result = sr;
}
// Enum if-else-Methode
public void printResult() {
if (this.result == StudentResult.ABSENT)
System.out.println(this.name + " war für die Prüfung abwesend.");
else if (this.result == StudentResult.PASS)
System.out.println(this.name + " hat die Prüfung bestanden.");
else
System.out.println(this.name + " hat die Prüfung durchgefallen.");
}
// Enum-Methode
public boolean wasAbsent() {
if (this.result == StudentResult.ABSENT)
return true;
else
return false;
}
// Haupte Methode
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 war abwesend: " + s1.wasAbsent());
}
}
- Führen Sie den Code mit dem folgenden Befehl in der Konsole aus:
javac Student.java && javac Demo.java && java Student
Verwenden von EnumSet
- Fügen Sie den folgenden Code hinzu, um EnumSet zu verwenden:
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);
}
}
Verwenden von EnumMaps
- Fügen Sie den folgenden Code hinzu, um EnumMaps zu verwenden:
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 hat die Prüfung bestanden");
resultMap.put(StudentResult.FAIL, "Student hat die Prüfung durchgefallen");
resultMap.put(StudentResult.ABSENT, "Student war für die Prüfung abwesend");
for (Map.Entry<StudentResult, String> e : resultMap.entrySet())
System.out.println(e.getKey() + " --> " + e.getValue());
}
}
Zusammenfassung
In diesem Lab haben Sie gelernt, wie man ein Enum erstellt, es mit if-else- und Switch-Anweisungen verwendet, über ein Enum iteriert, seine toString()-Methode verwendet, Enums aus Strings erstellt, ein Enum innerhalb einer Klasse erstellt, EnumSet verwendet, um Enum-Konstanten effizient zu speichern, EnumMaps verwendet, um Schlüssel-Wert-Paare von Enums zu speichern, und konkrete und abstrakte Methoden in Enums verwendet. Sie haben auch gelernt, dass Enums verwendet werden, um eine Sammlung von Konstantenwerten zu definieren und dass sie die Typsicherheit in Java erhöhen.



