Métodos estáticos em interfaces
Adicione métodos utilitários estáticos diretamente em interfaces em vez de classes utilitárias separadas.
Comparação 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)) { ... }
Viu um problema com este código? Nos avise.
Por que a forma moderna ganha
Melhor organização
Mantenha utilitários relacionados na interface, não em uma classe separada.
Descobribilidade
Métodos factory e auxiliares são encontrados onde se espera.
Coesão da API
Sem necessidade de classes *Utils ou *Helper separadas.
Abordagem Antiga
Classes utilitárias
Abordagem Moderna
Métodos estáticos na interface
Desde o JDK
8
Dificuldade
Iniciante
Suporte JDK
Métodos estáticos em interfaces
Disponível
Disponível desde o JDK 8 (março de 2014)
Como funciona
Antes do Java 8, métodos utilitários relacionados a uma interface precisavam ficar em uma classe separada (ex.: Collections para Collection). Métodos estáticos em interfaces permitem manter utilitários relacionados juntos. Comum em APIs modernas como Comparator.comparing(), Stream.of() e List.of().
Documentação Relacionada