ExpertiDict

Java · Intermediário · Português · Técnico

interface funcional

/ĩteɾˈfasi fũsjoˈnaw/substantivo

Interface com exatamente um método abstrato, que pode ser implementada por lambda ou referência de método. A anotação @FunctionalInterface faz o compilador conferir.

Onde usar

Aparece em Runnable, Comparator, Function e Predicate, e em APIs próprias para receber comportamento como parâmetro.

Em código

@FunctionalInterface
interface Validador<T> {
  boolean validar(T valor);
  default Validador<T> negar() {
    return v -> !validar(v);
  }
}
Validador<String> vazio = String::isEmpty;

Exemplos

Cria uma interface funcional para passar a regra de validação.

Essa interface tem dois métodos abstratos, então não aceita lambda.

Cuidado

Ter métodos default ou static não a desqualifica, pois só os abstratos contam; mas dois métodos abstratos impedem o uso de lambda.

Sinônimos

functional interface

Veja também

Todos os termos de Java