Menu
Coddy logo textTech

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”

challenge icon

Aufgabe

Einfach

Erstellen Sie eine Methode namens processValue, die ein Argument annimmt:

  1. 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));
    }
}
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Logik & Ablauf