DEV Community

Java Efetivo (livro)
Java Efetivo (livro)

Posted on • Edited on

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 erase, 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 erase 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.

Top comments (0)