Na interface de coleção, encontrei um método chamado removeIf()
que contém sua implementação.
default boolean removeIf(Predicate<? super E> filter) {
Objects.requireNonNull(filter);
boolean removed = false;
final Iterator<E> each = iterator();
while (each.hasNext()) {
if (filter.test(each.next())) {
each.remove();
removed = true;
}
}
return removed;
}
Eu quero saber se existe alguma maneira de definir o corpo do método em uma interface?
Qual é a default
palavra - chave e como funciona?
Respostas:
De https://dzone.com/articles/interface-default-methods-java
Há uma pergunta comum que as pessoas fazem sobre os métodos padrão quando ouvem sobre o novo recurso pela primeira vez:
Exemplo para ilustrar esta situação:
Este código falha ao compilar com o seguinte resultado:
Para corrigir isso, em Clazz, temos que resolver isso manualmente, substituindo o método conflitante:
Mas e se quisermos chamar a implementação padrão do método foo () da interface A em vez de implementar a nossa própria.
É possível se referir a A # foo () da seguinte maneira:
fonte
Esses métodos são chamados de métodos padrão. O método padrão ou método Defender é um dos recursos recém-adicionados no Java 8.
Eles serão usados para permitir que um método de interface forneça uma implementação usada como padrão no caso de uma classe concreta não fornecer uma implementação para aquele método.
Portanto, se você tiver uma interface, com um método padrão:
A seguinte classe é perfeitamente válida:
Se você criar uma instância de
HelloImpl
:Links Úteis:
fonte
Eu fiz um pouco de pesquisa e encontrei o seguinte. Espero que isto ajude.
Os métodos de interface normais são declarados como abstratos e devem ser definidos na classe que implementa a interface. Isso 'sobrecarrega' o implementador da classe com a responsabilidade de implementar todos os métodos declarados. Mais importante, isso também significa que estender uma interface não é possível após a 'publicação'. Caso contrário, todos os implementadores teriam que adaptar sua implementação, interrompendo a compatibilidade de origem e binária com versões anteriores.
Para lidar com esses problemas, um dos novos recursos do JDK 8 é a possibilidade de estender as interfaces existentes com métodos padrão. Os métodos padrão não são apenas declarados, mas também definidos na interface.
fonte