DEV Community

Giselecoder
Giselecoder

Posted on

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.

Top comments (0)