Enum metotları
- Java kursu
- Başlangıç
- Ders 103/116
- 4 dk
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()); // trueYö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
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
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
boolean big = Coffee.____.isLarge();
boolean big = Coffee.LARGE.isLarge();
Açıklama: Coffee.LARGE.isLarge() true döndürür.