"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Por que os arrays não podem conter itens genéricos em Java?

Por que os arrays não podem conter itens genéricos em Java?

Publicado em 2024-11-18
Navegar:556

Why Can\'t Arrays Hold Generic Items in Java?

Os arrays podem conter itens genéricos?

Tipos genéricos e arrays podem interagir de maneira diferente em Java. Considere o seguinte código:

ArrayList a = new ArrayList();

Este código é compilado com sucesso, criando um ArrayList genérico chamado a. No entanto, o código a seguir falha na compilação:

ArrayList[] a = new ArrayList[10];

Por que isso acontece? Parece que arrays e genéricos são incompatíveis. Para entender isso, vamos explorar o Type Erasure em Java. tipos brutos (objeto). Isso evita erros como colocar uma String em um ArrayList de inteiros. No entanto, as matrizes exigem um tipo bruto e os genéricos não podem ser representados como tipos brutos.

Corrigindo o problema da matriz

Para criar uma matriz de itens genéricos, você pode explicitamente converta o array para o tipo desejado:

ArrayList[] a = (ArrayList[]) new ArrayList[10];

Esta conversão instrui o compilador que o array deve ser considerado um array de ArrayLists com elementos-chave.

ArrayList[] a = (ArrayList[]) new ArrayList[10];

Em Java, uma lista de listas não é considerada um array. Portanto, o código a seguir é compilado sem conversão de tipo:

ArrayList> b = new ArrayList>();

Essa distinção surge porque ArrayList é um tipo não array.

ArrayList> b = new ArrayList>();

Arrays e tipos genéricos têm limitações em Java devido a Digite Apagamento. No entanto, ao converter explicitamente arrays para o tipo genérico desejado ou usar listas de listas, pode-se navegar por essas limitações e usar efetivamente tipos genéricos em ambos os contextos.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3