DEV Community

Java Efetivo (livro)
Java Efetivo (livro)

Posted on

1

Item 31: Use os wildcards limitados para aumentar a flexibilidade da API

Resumo baseado no livro Java Efetivo.
Este resumo cobre os pontos principais discutidos no item 31, focando na importância e aplicação dos wildcards limitados para melhorar a flexibilidade e segurança das APIs em Java.

1. Tipos Parametrizados Invariantes:
List< Type1 > não é subtipo nem supertipo de List< Type2 >.
List< String > não é um subtipo de List< Object > .

2. Flexibilidade dos Wildcards:
Wildcards limitados aumentam a flexibilidade da API.
Iterable <? extends E> : Subtipo de E.
Collection <? super E> : Supertipo de E.

3. Exemplo Prático com Stack:
Método pushAll modificado para Iterable <? extends E> para aceitar subtipos.

Image description

Método popAll modificado para Collection <? super E> para aceitar supertypos.

Image description

4. Princípio PECS:
PECS: Producer-extends, Consumer-super.
Use <? extends T> para produtores de T.
Use <? super T> para consumidores de T.

5. Exemplos de Aplicação de PECS:
Construtor de Chooser deve usar Collection < ? extends T >.
Método union deve usar Set < ? extends E > para os parâmetros.

6. Tipos Wildcard nos Tipos de Retorno:
Não use wildcards nos tipos de retorno.
Simplifique a API para os usuários.

7. Método max:
Original: List < T >.
Modificado: List < ? extends T > e Comparable < ? super T >.

Image description

8. Dualidade entre Parâmetros de Tipo e Wildcards:
Exemplo: Método swap.
Preferência por wildcards para simplificação.

Image description

9. Método Auxiliar para Captura de Wildcards:
Uso de métodos auxiliares genéricos para lidar com wildcards.

Image description

10. Conclusão:
Uso de wildcards aumenta a flexibilidade e segurança de tipo das APIs.
Lembre-se da regra PECS para aplicar wildcards de forma adequada.

Image of Docusign

🛠️ Bring your solution into Docusign. Reach over 1.6M customers.

Docusign is now extensible. Overcome challenges with disconnected products and inaccessible data by bringing your solutions into Docusign and publishing to 1.6M customers in the App Center.

Learn more

Top comments (0)

A Workflow Copilot. Tailored to You.

Pieces.app image

Our desktop app, with its intelligent copilot, streamlines coding by generating snippets, extracting code from screenshots, and accelerating problem-solving.

Read the docs

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay