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 dir zu prüfen, ob ein Objekt einen bestimmten Typ hat, und Komponenten daraus zu extrahieren. Es vereinfacht Typüberprüfungen und Umwandlungsoperationen.

Sehen wir uns an, wie man Mustervergleich mit instanceof verwendet:

Object obj = "Hello";
if (obj instanceof String str) {
   // str wird automatisch zu String gecastet
   System.out.println(str.toUpperCase());
}

Nach Ausführung des obigen Codes lautet die Ausgabe:

"HELLO"

Du kannst Musterprüfungen auch mit else if 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";
}

Nach der Ausführung des obigen Codes enthält result:

“Number: 42”

challenge icon

Aufgabe

Einfach

Erstelle eine Methode namens processValue, die ein Argument entgegennimmt:

  1. Ein Object (value), das unterschiedlichen Typen angehören kann

Die Methode soll Pattern Matching mit instanceof verwenden, um den Wert zu verarbeiten und basierend auf diesen Regeln einen String zurückzugeben:

  • Wenn es sich um einen Integer handelt: Gib "Number: " gefolgt vom verdoppelten Wert zurück
  • Wenn es sich um einen String handelt: Gib "Text: " gefolgt vom Wert in Großbuchstaben zurück
  • Wenn es sich um einen Boolean handelt: Gib "Boolean: " gefolgt vom entgegengesetzten Wert zurück (true wird zu false und umgekehrt)
  • Für jeden anderen Typ: Gib "Unknown" zurück

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: gib "Number: " + (value * 2) zurück
        // Wenn es ein String ist: gib "Text: " + value.toUpperCase() zurück
        // Wenn es ein Boolean ist: gib "Boolean: " + (!value) zurück
        // Für jeden anderen Typ: gib "Unknown" zurück
        
    }
    
    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

Übe selbstständig: Online-Java-Compiler