Menu
Coddy logo textTech

Desen Eşleştirme

Coddy'nin Java Journey'sinin Mantık & Akış bölümünün bir parçası — ders 37 / 59.

Java'da örüntü eşleştirme, bir nesnenin belirli bir türe sahip olup olmadığını test etmenize ve ondan bileşenleri çıkarmaya olanak tanır. Tür denetimi ve döküm işlemlerini basitleştirir.

instanceof ile pattern matching'in nasıl kullanıldığını görelim:

Object obj = "Hello";
if (obj instanceof String str) {
   // str otomatik olarak String'e dönüştürülür
   System.out.println(str.toUpperCase());
}

Yukarıdaki kodu çalıştırdıktan sonra çıktı:

"HELLO"

Switch ifadelerinde de örtüntü eşleştirme kullanabilirsiniz:

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";
}

Yukarıdaki kodu çalıştırdıktan sonra, result içerir:

“Number: 42”

challenge icon

Görev

Kolay

processValue adında bir metot oluşturun ki bu metot bir argüman alsın:

  1. Farklı tiplerden olabilecek bir Object (value)

Metot, değeri işlemek ve şu kurallara göre bir dize döndürmek için instanceof ile pattern matching kullanmalıdır:

  • Eğer bir Integer ise: "Number: " değerin iki katı ile döndürün
  • Eğer bir String ise: "Text: " değerin büyük harfe çevrilmiş hali ile döndürün
  • Eğer bir Boolean ise: "Boolean: " ters değer ile döndürün (true false olur ve tersi)
  • Herhangi bir diğer tip için: "Unknown" döndürün

Kopya kağıdı

Java'da pattern matching, bir nesnenin belirli bir türe sahip olup olmadığını test etmenize ve ondan bileşenleri çıkarmak için instanceof kullanmanıza olanak tanır:

Object obj = "Hello";
if (obj instanceof String str) {
   // str otomatik olarak String'e dönüştürülür
   System.out.println(str.toUpperCase());
}

Birden fazla pattern matching kontrolünü zincirleyebilirsiniz:

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";
}

Kendin dene

import java.util.Scanner;

public class Main {
    public static String processValue(Object value) {
        // TODO: Değeri işlemek için instanceof ile pattern matching kullanın
        // Eğer bir Integer ise: return "Number: " + (value * 2)
        // Eğer bir String ise: return "Text: " + value.toUpperCase()
        // Eğer bir Boolean ise: return "Boolean: " + (!value)
        // Herhangi bir diğer tür için: 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 iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Mantık & Akış bölümündeki tüm dersler