CodeBlanks Logo Icon CodeBlanks

Enum metotları

Enum içinde metot tanımlamayı öğrenirsin.

Enum içinde yöntem tanımla

Bir enum tıpkı sınıf gibi yöntem içerebilir. Bu yöntemler sabitin alanlarını kullanarak farklı davranışlar üretir. Böylece enum yalnızca değer değil davranış da taşır.

enum Coffee {
  SMALL, LARGE;
  public boolean isLarge() {
    return this == LARGE;
  }
}
System.out.println(Coffee.LARGE.isLarge()); // true

Yöntem this ile çağrıldığı sabiti ifade eder. this == LARGE karşılaştırması referans değil sabit eşitliğini denetler. Bu, koşullu davranışı sabitte toplamanın temiz bir yoludur.

Sabit başına davranış

Bir enuma abstract yöntem ekleyip her sabitte ayrı ayrı geçersiz kılabilirsin. Böylece her sabit kendi davranışını taşır ve switch'e gerek kalmaz.

enum Operation {
  ADD { public int apply(int a, int b) { return a + b; } },
  MUL { public int apply(int a, int b) { return a * b; } };
  public abstract int apply(int a, int b);
}

Her sabit anonim bir alt sınıf gibi davranır ve kendi apply gövdesini yazar. Bu, kodu dağıtmak yerine davranışı sabitin yanında tutar; okunurluğu artırır. Strateji deseninin basit bir biçimidir.

Uygulama isLarge yöntemini yaz

SMALL ve LARGE sabitlerinden oluşan bir Coffee enumu tanımla. İçine public boolean isLarge() yöntemi ekle; this == LARGE ile true döndürsün. Coffee.LARGE.isLarge() sonucunu yazdır.

Başlangıç kodu

Main.java
public class Main {
  public static void main(String[] args) {
    // Coffee enumunu tanımla, isLarge ekle, sonucu yazdır
  }
}

// Coffee enumunu buraya tanımla

Örnek çözüm

Main.java
enum Coffee {
  SMALL, LARGE;
  public boolean isLarge() {
    return this == LARGE;
  }
}
// main içinde:
System.out.println(Coffee.LARGE.isLarge());

Beklenen çıktı

true

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Yöntem çağrısını sonucuyla eşleştir

Kavram Anlamı
Coffee.SMALL.isLarge() false
Coffee.LARGE.isLarge() true
this == LARGE Karşılaştırma
isLarge() Yöntem

2 Enum içinde tanımlanan isLarge() yöntemi ne döndürür?

  • Her zaman true
  • Bir dizi
  • Yalnızca String
  • Çağrıldığı sabite göre true veya false Doğru cevap

Açıklama: yöntem this ile çağrıldığı sabiti denetler; LARGE için true, diğerleri için false döner.

3 Yöntemi çağır

Soru
boolean big = Coffee.____.isLarge();
Cevap
boolean big = Coffee.LARGE.isLarge();

Açıklama: Coffee.LARGE.isLarge() true döndürür.

Başlangıç bölümündeki tüm dersler