Private interface methods
Extract shared logic in interfaces using private methods.
Porównanie kodu
✕ 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));
}
}
Widzisz problem z tym kodem? Daj nam znać.
Dlaczego nowoczesne podejście wygrywa
Code reuse
Share logic between default methods without duplication.
Encapsulation
Implementation details stay hidden from implementing classes.
DRY interfaces
No more copy-paste between default methods.
Stare podejście
Duplicated Logic
Nowoczesne podejście
Private Methods
Od JDK
9
Poziom trudności
Średniozaawansowany
Wsparcie JDK
Private interface methods
Dostępne
Widely available since JDK 9 (Sept 2017)
Jak to działa
Java 9 allows private methods in interfaces, enabling you to share code between default methods without exposing implementation details to implementing classes.
Powiązana dokumentacja