Item 44: Prefira o uso das interfaces funcionais padrão

Evolução das APIs com Lambdas: Com a introdução de lambdas no Java, práticas para escrever APIs mudaram, como evitar o padrão Template Method em favor de fábricas estáticas ou construtores que aceitam objetos de função.

Exemplo do LinkedHashMap: Em ve…


This content originally appeared on DEV Community and was authored by Mulher Programadora

Evolução das APIs com Lambdas: Com a introdução de lambdas no Java, práticas para escrever APIs mudaram, como evitar o padrão Template Method em favor de fábricas estáticas ou construtores que aceitam objetos de função.

Exemplo do LinkedHashMap: Em vez de sobrescrever o método removeEldestEntry para controle de cache, seria mais moderno usar uma fábrica estática ou construtor com um objeto de função, utilizando a interface funcional BiPredicate.

Uso de Interfaces Funcionais Padrão: O pacote java.util.function oferece uma ampla coleção de interfaces funcionais padrão, que devem ser preferidas a interfaces customizadas para facilitar a compreensão da API e melhorar a interoperabilidade.

Principais Interfaces Funcionais:

  • UnaryOperator: Aplica uma função de tipo T para T.
  • BinaryOperator: Aplica uma função de dois argumentos de tipo T para T.
  • Predicate: Testa um argumento e retorna um booleano.
  • Function: Aplica uma função de tipo T para R.
  • Supplier: Fornece um valor de tipo T sem argumentos.
  • Consumer: Consome um argumento de tipo T sem retorno.

Interfaces Funcionais para Tipos Primitivos: Existem variantes das seis interfaces básicas para tipos primitivos (int, long, double), como IntPredicate e LongBinaryOperator.

Quando Criar Interfaces Funcionais Customizadas:
Quando nenhuma interface padrão atende às necessidades.
Quando é necessário um nome descritivo ou um contrato forte.
Quando a interface pode se beneficiar de métodos padrões customizados.
Uso da Anotação @FunctionalInterface: Indica que a interface foi projetada para suportar lambdas, garantindo que ela tenha apenas um método abstrato.

Evitar Sobrecargas Ambíguas: Não criar métodos com muitas sobrecargas que aceitam interfaces funcionais diferentes na mesma posição de argumento para evitar ambiguidades.

**Conclusão: **Lambdas e interfaces funcionais devem ser considerados no design de APIs modernas. Geralmente, é preferível usar as interfaces padrão de java.util.function, exceto em casos específicos que justificam interfaces personalizadas.


This content originally appeared on DEV Community and was authored by Mulher Programadora


Print Share Comment Cite Upload Translate Updates
APA

Mulher Programadora | Sciencx (2024-07-25T00:42:45+00:00) Item 44: Prefira o uso das interfaces funcionais padrão. Retrieved from https://www.scien.cx/2024/07/25/item-44-prefira-o-uso-das-interfaces-funcionais-padrao/

MLA
" » Item 44: Prefira o uso das interfaces funcionais padrão." Mulher Programadora | Sciencx - Thursday July 25, 2024, https://www.scien.cx/2024/07/25/item-44-prefira-o-uso-das-interfaces-funcionais-padrao/
HARVARD
Mulher Programadora | Sciencx Thursday July 25, 2024 » Item 44: Prefira o uso das interfaces funcionais padrão., viewed ,<https://www.scien.cx/2024/07/25/item-44-prefira-o-uso-das-interfaces-funcionais-padrao/>
VANCOUVER
Mulher Programadora | Sciencx - » Item 44: Prefira o uso das interfaces funcionais padrão. [Internet]. [Accessed ]. Available from: https://www.scien.cx/2024/07/25/item-44-prefira-o-uso-das-interfaces-funcionais-padrao/
CHICAGO
" » Item 44: Prefira o uso das interfaces funcionais padrão." Mulher Programadora | Sciencx - Accessed . https://www.scien.cx/2024/07/25/item-44-prefira-o-uso-das-interfaces-funcionais-padrao/
IEEE
" » Item 44: Prefira o uso das interfaces funcionais padrão." Mulher Programadora | Sciencx [Online]. Available: https://www.scien.cx/2024/07/25/item-44-prefira-o-uso-das-interfaces-funcionais-padrao/. [Accessed: ]
rf:citation
» Item 44: Prefira o uso das interfaces funcionais padrão | Mulher Programadora | Sciencx | https://www.scien.cx/2024/07/25/item-44-prefira-o-uso-das-interfaces-funcionais-padrao/ |

Please log in to upload a file.




There are no updates yet.
Click the Upload button above to add an update.

You must be logged in to translate posts. Please log in or register.