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şleme, 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ğına bakalım:

Object obj = "Hello";
if (obj instanceof String str) {
   // str otomatik olarak String'e cast edilir
   System.out.println(str.toUpperCase());
}

Yukarıdaki kod yürütüldükten sonra çıktı şöyledir:

"HELLO"

Desen eşleştirme kontrollerini else if ile de 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";
}

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

“Number: 42”

challenge icon

Görev

Kolay

Tek bir bağımsız değişken alan processValue adlı bir yöntem oluşturun:

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

Yöntem, değeri işlemek ve şu kurallara göre bir dize döndürmek için instanceof ile kalıp eşleştirmeyi kullanmalıdır:

  • Bir Integer ise: değer iki katına çıkarılmış şekilde başına "Number: " ekleyerek döndürün
  • Bir String ise: değeri büyük harfe dönüştürülmüş şekilde başına "Text: " ekleyerek döndürün
  • Bir Boolean ise: karşıt değeri (true false olur ve bunun tersi) başına "Boolean: " ekleyerek döndürün
  • Diğer tüm türler için: "Unknown" döndürün

Kendin dene

import java.util.Scanner;

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