Item 28: Prefira as listas aos arrays

  • Os arrays são covariantes, o que significa que um array de um subtipo é um subtipo de um array de um supertipo. Já os genéricos são invariantes.
  • Os arrays são reificados, ou seja, conhecem e fazem valer o tipo de seus elementos em tempo de execução, enquanto os genéricos são implementados pelo processo de erasure, perdendo as informações sobre os tipos dos elementos em tempo de execução.
  • Não é permitida a criação de arrays genéricos devido à falta de segurança de tipos, que poderia resultar em ClassCastException em tempo de execução.
  • Tipos como E, List e List são tipos não reificados, enquanto tipos wildcard ilimitados, como List<?> e Map<?,?>, são reificados.
  • Recomenda-se utilizar List em vez de arrays quando se trata de type safety e interoperabilidade.
  • Arrays e genéricos têm diferentes regras de tipos, o que os torna incompatíveis. Recomenda-se substituir arrays por listas quando se misturam e ocorrem advertências ou erros na compilação.

Reforçando o resumo do resumo:

Segundo o artigo, as vantagens de preferir listas em vez de arrays incluem:

Type Safety: Listas oferecem maior segurança de tipo em tempo de compilação, enquanto arrays podem resultar em erros de tipo em tempo de execução, como ClassCastException.

Interoperabilidade: Listas são mais interoperáveis com código legado e outros tipos genéricos devido ao processo de erasure usado pelos genéricos, enquanto arrays podem ser mais limitados nesse aspecto.

Eliminação de Advertências: O uso de listas em vez de arrays pode eliminar advertências de compilação, especialmente ao lidar com métodos varargs e tipos genéricos.

Confiabilidade: Embora possam ser um pouco mais verbosas e menos eficientes, as listas proporcionam uma maior tranquilidade em relação à segurança de tipo, evitando exceções em tempo de execução.


Discover more from Coursity

Subscribe to get the latest posts sent to your email.

Leave a Comment

Your email address will not be published. Required fields are marked *

Discover more from Coursity

Subscribe now to keep reading and get access to the full archive.

Continue reading

Scroll to Top
Understanding file transfer utilities : rsync, ssh, scp, and rcp. App development invogue nexus web design. Keyword optimized heading : top 5 seo friendly wordpress themes for business.