Méthodes statiques dans les interfaces
Ajoutez des méthodes utilitaires statiques directement aux interfaces au lieu de classes utilitaires séparées.
Comparaison de Code
✕ 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)) { ... }
Un problème avec ce code ? Dites-le nous.
Pourquoi la méthode moderne gagne
Meilleure organisation
Gardez les utilitaires liés à l'interface, pas dans une classe séparée.
Découvrabilité
Les méthodes factory et auxiliaires se trouvent là où vous les attendez.
Cohésion d'API
Pas besoin de classes *Utils ou *Helper séparées.
Ancienne Approche
Classes utilitaires
Approche Moderne
Méthodes statiques dans les interfaces
Depuis JDK
8
Difficulté
Débutant
Support JDK
Méthodes statiques dans les interfaces
Disponible
Disponible depuis JDK 8 (mars 2014)
Comment ça fonctionne
Avant Java 8, les méthodes utilitaires liées à une interface devaient résider dans une classe séparée (ex. Collections pour Collection). Les méthodes statiques dans les interfaces permettent de garder les utilitaires liés ensemble. C'est courant dans les APIs modernes comme Comparator.comparing(), Stream.of() et List.of().
Documentation Associée