Todas as boas respostas aqui. Eu gostaria de adicionar outro uso prático da função estática na interface. A dica vem do livro - Effective Java, 3rd Edition de Joshua Bloch no Capítulo 2: Criando e destruindo objeto.
Static functions can be used for static factory methods.
Os métodos de fábrica estáticos são métodos que retornam um objeto. Eles funcionam como construtores. Em casos específicos, o método de fábrica estático fornece código mais legível do que usar o construtor.
Citando o livro - Effective Java, 3rd Edition de Joshua Bloch
Antes do Java 8, as interfaces não podiam ter métodos estáticos. Por convenção, os métodos de fábrica estáticos para uma interface chamada Type foram colocados em uma classe complementar não instável (Item 4) chamada Types.
O autor dá um exemplo de coleções onde esse método de fábrica estático é implementado. Verificando o código, Josh Bloch pode ser visto como o primeiro autor da classe Coleções. Embora Collections seja uma classe e não uma interface. Mas o conceito ainda se aplica.
Por exemplo, o Java Collections Framework tem quarenta e cinco implementações de utilitários de suas interfaces, fornecendo coleções não modificáveis, coleções sincronizadas e assim por diante. Quase todas essas implementações são exportadas por meio de métodos de fábrica estáticos em uma classe não instável (java.util.Collections). As classes dos objetos retornados são todas não públicas.
Além disso, ele explica que a API não é apenas menor, ela ajuda na legibilidade do código e na facilidade da API.
Não é apenas o volume da API que é reduzido, mas também o peso conceitual: o número e a dificuldade dos conceitos que os programadores devem dominar para usar a API. O programador sabe que o objeto retornado possui precisamente a API especificada por sua interface, portanto, não há necessidade de ler a documentação da classe adicional para a classe de implementação.
Aqui está um dos métodos estáticos da classe java.util.Collections:
public static <T> Collection<T> unmodifiableCollection(Collection<? extends T> c) {
return new UnmodifiableCollection<>(c);
}