Özel interface metotları
Özel metotlar kullanarak interface'lerdeki paylaşılan mantığı çıkarın.
Kod Karşılaştırması
✕ Java 8
interface Logger {
default void logInfo(String msg) {
System.out.println(
"[INFO] " + timestamp() + msg);
}
default void logWarn(String msg) {
System.out.println(
"[WARN] " + timestamp() + msg);
}
}
✓ Java 9+
interface Logger {
private String format(String lvl, String msg) {
return "[" + lvl + "] " + timestamp() + msg;
}
default void logInfo(String msg) {
IO.println(format("INFO", msg));
}
default void logWarn(String msg) {
IO.println(format("WARN", msg));
}
}
Bu kodda bir sorun mu gördünüz? Bize bildirin.
Modern yöntem neden daha iyi
Kod yeniden kullanımı
Tekrar etmeden varsayılan metotlar arasında mantığı paylaşın.
Kapsülleme
Uygulama ayrıntıları uygulayan sınıflardan gizli kalır.
DRY interface'ler
Varsayılan metotlar arasında artık kopyala-yapıştır yok.
Eski Yaklaşım
Çoğaltılmış Mantık
Modern Yaklaşım
Özel Metotlar
JDK'dan itibaren
9
Zorluk
Orta
JDK Desteği
Özel interface metotları
Mevcut
JDK 9'dan itibaren geniş çapta kullanılabilir (Eylül 2017)
Nasıl çalışır
Java 9, interface'lerde özel metotlara izin vererek uygulama ayrıntılarını uygulayan sınıflara göstermeden varsayılan metotlar arasında kod paylaşmanıza olanak tanır.
İlgili Belgeler