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.
Método popAll modificado para Collection <? super E> para aceitar supertypos.
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 >.
8. Dualidade entre Parâmetros de Tipo e Wildcards:
Exemplo: Método swap.
Preferência por wildcards para simplificação.
9. Método Auxiliar para Captura de Wildcards:
Uso de métodos auxiliares genéricos para lidar com wildcards.
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)