Musterabgleich
Teil des Abschnitts Logik & Ablauf der Java-Journey von Coddy — Lektion 37 von 59.
Pattern Matching in Java ermöglicht es, zu prüfen, ob ein Objekt einen bestimmten Typ hat, und Komponenten daraus zu extrahieren. Es vereinfacht Typprüfungen und Casting-Operationen.
Lassen Sie uns sehen, wie man Pattern Matching mit instanceof verwendet:
Object obj = "Hello";
if (obj instanceof String str) {
// str wird automatisch zu String gecastet
System.out.println(str.toUpperCase());
}Nach der Ausführung des obigen Codes lautet die Ausgabe:
"HELLO"
Sie können Pattern Matching auch in Switch-Ausdrücken verwenden:
Object value = 42;
String result;
if (value instanceof Integer i) {
result = "Number: " + i;
} else if (value instanceof String s) {
result = "Text: " + s;
} else {
result = "Unknown";
}Nach Ausführen des obigen Codes enthält result:
“Number: 42”
Aufgabe
EinfachErstellen Sie eine Methode namens processValue, die ein Argument annimmt:
- Ein
Object(value), das von verschiedenen Typen sein kann
Die Methode sollte Pattern Matching mit instanceof verwenden, um den Wert zu verarbeiten und einen String basierend auf diesen Regeln zurückzugeben:
- Wenn es ein Integer ist: geben Sie "Number: " gefolgt vom verdoppelten Wert zurück
- Wenn es ein String ist: geben Sie "Text: " gefolgt vom Wert in Großbuchstaben zurück
- Wenn es ein Boolean ist: geben Sie "Boolean: " gefolgt vom gegenteiligen Wert zurück (true wird false und umgekehrt)
- Für jeden anderen Typ: geben Sie "Unknown" zurück
Spickzettel
Pattern Matching in Java ermöglicht es, zu testen, ob ein Objekt einen bestimmten Typ hat und Komponenten daraus zu extrahieren, unter Verwendung von instanceof:
Object obj = "Hello";
if (obj instanceof String str) {
// str wird automatisch zu String gecastet
System.out.println(str.toUpperCase());
}Sie können mehrere Pattern-Matching-Überprüfungen verketten:
Object value = 42;
String result;
if (value instanceof Integer i) {
result = "Number: " + i;
} else if (value instanceof String s) {
result = "Text: " + s;
} else {
result = "Unknown";
}Probier es selbst
import java.util.Scanner;
public class Main {
public static String processValue(Object value) {
// TODO: Verwende Pattern Matching mit instanceof, um den Wert zu verarbeiten
// Wenn es ein Integer ist: return "Number: " + (value * 2)
// Wenn es ein String ist: return "Text: " + value.toUpperCase()
// Wenn es ein Boolean ist: return "Boolean: " + (!value)
// Für jeden anderen Typ: return "Unknown"
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String type = scanner.nextLine();
String inputValue = scanner.nextLine();
Object value = switch(type) {
case "Integer" -> Integer.parseInt(inputValue);
case "String" -> inputValue;
case "Boolean" -> Boolean.parseBoolean(inputValue);
default -> inputValue;
};
System.out.println(processValue(value));
}
}Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Logik & Ablauf
1Mehrdimensionale Arrays
Grundlagen der 2D-ArraysZugriff auf 2D-Array-ElementeVerschachtelte Schleifen mit 2D-ArraysZusammenfassung - 2D-ArraysMatrixaddition & SubtraktionJagged Arrays3D-Arrays und darüber hinausGängige 2D-Array-MusterZusammenfassung - Alles über Arrays2HashMap Teil 1
Was ist eine HashMap?Eine HashMap deklarierenWerte abrufenPrüfen, ob ein Schlüssel existiertWörterbücher modifizierenZusammenfassung - HashMap3HashMap Teil 2
HashMap-MethodenMit keySet() iterierenMit entrySet() iterierenVerschachtelte HashMapZusammenfassung - Lager verwaltenZusammenfassung - HashMap-Operationen6Erweiterter Steuerungsfluss
Beschriftete AnweisungenSwitch-AusdruckMusterabgleichSchutzklauselnZusammenfassung - Steuerungsfluss9Projekt - Einzigartiger Wortzähler
Texteingabe und SpeicherungWortverarbeitung