Functional Interfaces

Aula
Estado
💡
Possuem apenas um método abstrato
  • Fortemente relacionadas com lambda expressions
  • Podem ter outros métodos, porém eles precisam ser static, default ou private
    • notion image

Principais Functional Interfaces

  • Predicate<T>: executar testes
  • Function<T, R>: converter tipos
  • UnaryOperator<T>: é uma variante de Function focada em converter valores (e.g. capitalizar as palavras em uma String)
  • Consumer<T>: processar elementos (e.g. fazer ações com base em um determinado elemento; operações que um forEach ou peek executariam)
  • Supplier<T>: gerar elementos
  • Existem ainda variantes de primitivos para essas functional interfaces. Essas variantes existem para evitar escrever muito código já existente, quando for necessário acelerar a performance de operações em Streams que lidem com os primitivos int, double e long
  • Existem também variantes de dois argumentos (bi-argument)
notion image

Comparator

  • O método thenComparing permite fazer uma sequência de comparações
  • O método reversed permite inverter a ordem da coleção comparada

Predicate

  • Os métodos and e or combinam predicados
  • O método negate nega o resultado de um Predicate
  • O método not é a versão estática de negate
  • O método isEqual compara um dado objeto com o conteúdo da coleção comparada

Function

  • O método andThen executa uma função com o resultado da primeira operação como input
  • O método compose executa uma função antes da que a invocou e passa seu resultado para ela
  • O método identity retorna uma função que retorna seu input como argumento; equivalente a t -> t