Metodi statici nelle interfacce
Aggiungi metodi di utilità statici direttamente nelle interfacce invece di classi di utilità separate.
Confronto Codice
✕ Java 7
// Separate utility class needed
public class ValidatorUtils {
public static boolean isBlank(
String s) {
return s == null ||
s.trim().isEmpty();
}
}
// Usage
if (ValidatorUtils.isBlank(input)) { ... }
✓ Java 8+
public interface Validator {
boolean validate(String s);
static boolean isBlank(String s) {
return s == null ||
s.trim().isEmpty();
}
}
// Usage
if (Validator.isBlank(input)) { ... }
Vedi un problema con questo codice? Faccelo sapere.
Perché vince l'approccio moderno
Migliore organizzazione
Tieni le utilità correlate con l'interfaccia, non in una classe separata.
Rilevabilità
I metodi factory e helper si trovano dove te li aspetti.
Coesione dell'API
Nessun bisogno di classi *Utils o *Helper separate.
Approccio Vecchio
Classi di utilità
Approccio Moderno
Metodi statici nelle interfacce
Dal JDK
8
Difficoltà
Principiante
Supporto JDK
Metodi statici nelle interfacce
Disponibile
Disponibile dal JDK 8 (marzo 2014)
Come funziona
Prima di Java 8, i metodi di utilità correlati a un'interfaccia dovevano trovarsi in una classe separata (es. Collections per Collection). I metodi statici nelle interfacce permettono di tenere le utilità correlate insieme. Comune nelle API moderne come Comparator.comparing(), Stream.of() e List.of().
Documentazione Correlata