Menu
CoddyTech

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 desen eşleştirme, bir nesnenin belirli bir türe sahip olup olmadığını test etmenize ve bileşenlerini ondan çıkarmanıza olanak tanır. Tür denetimi ve tür dönüştürme işlemlerini basitleştirir.

instanceof ile desen eşleştirmenin nasıl kullanılacağını görelim:

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

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

"HELLO"

Desen eşleştirme kontrollerini else if ile zincirleme olarak da 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 şunu içerir:

“Number: 42”

challenge icon

Görev

Kolay

processValue adlı ve bir argüman alan bir yöntem oluştur:

  1. Farklı türlerde olabilecek bir Object (value)

Yöntem, değeri işlemek ve aşağıdaki kurallara göre bir dize döndürmek için instanceof ile desen eşleştirme kullanmalıdır:

  • Integer ise: ardından değerin iki katı gelen "Number: " döndür
  • String ise: ardından değerin büyük harfli hâli gelen "Text: " döndür
  • Boolean ise: ardından karşıt değer gelen "Boolean: " döndür (true false olur ve bunun tersi de geçerlidir)
  • Diğer tüm türler için: "Unknown" döndür

Kendin dene

import java.util.Scanner;

public class Main {
    public static String processValue(Object value) {
        // TODO: Değeri işlemek için instanceof ile örüntü eşleştirmesi kullan
        // Integer ise: "Number: " + (value * 2) döndür
        // String ise: "Text: " + value.toUpperCase() döndür
        // Boolean ise: "Boolean: " + (!value) döndür
        // Diğer tüm türler için: "Unknown" döndür
        
    }
    
    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

Kendi başına pratik yap: Online Java derleyicisi