As interfaces são um substituto válido para as classes de utilitários no Java 8? [duplicado]
Esta pergunta já tem uma resposta aqui:
Java 8: Interface com métodos estáticos em vez da classe util estática 4 respostasNos últimos dez anos, tenho usado o padrão abaixo para minhas classes de utilitários Java. A classe contém apenas métodos e campos estáticos, é declaradafinal
portanto, não pode ser estendido e tem umprivate
construtor para que não possa ser instanciado.
public final class SomeUtilityClass {
public static final String SOME_CONSTANT = "Some constant";
private SomeUtilityClass() {}
public static Object someUtilityMethod(Object someParameter) {
/* ... */
return null;
}
}
Agora, com a introdução demétodos estáticos em interfaces Ultimamente, no Java 8, me vejo usando um padrão de interface de utilitário:
public interface SomeUtilityInterface {
String SOME_CONSTANT = "Some constant";
static Object someUtilityMethod(Object someParameter) {
/* ... */
return null;
}
}
Isso permite que eu me livre do construtor e de muitas palavras-chave (public
, static
, final
) implícitos nas interfaces.
Há alguma desvantagem nessa abordagem? Existem benefícios em usar uma classe de utilitário em uma interface de utilitário?