Métodos estáticos en interfaces
Añade métodos de utilidad estáticos directamente a las interfaces en lugar de clases de utilidad separadas.
Comparación de Código
✕ 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)) { ... }
¿Ves un problema con este código? Cuéntanos.
Por qué gana la forma moderna
Mejor organización
Mantén las utilidades relacionadas con la interfaz, no en una clase separada.
Descubribilidad
Los métodos factory y auxiliares se encuentran donde los esperas.
Cohesión de API
No se necesitan clases *Utils o *Helper separadas.
Enfoque Antiguo
Clases de utilidad
Enfoque Moderno
Métodos estáticos en interfaces
Desde JDK
8
Dificultad
Principiante
Soporte JDK
Métodos estáticos en interfaces
Disponible
Disponible desde JDK 8 (marzo 2014)
Cómo funciona
Antes de Java 8, los métodos de utilidad relacionados con una interfaz debían residir en una clase separada (p.ej., Collections para Collection). Los métodos estáticos en interfaces permiten mantener las utilidades relacionadas juntas. Es común en las APIs modernas como Comparator.comparing(), Stream.of() y List.of().
Documentación Relacionada