"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Por qué las matrices no pueden contener elementos genéricos en Java?

¿Por qué las matrices no pueden contener elementos genéricos en Java?

Publicado el 2024-11-18
Navegar:295

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

¿Pueden las matrices contener elementos genéricos?

Los tipos genéricos y las matrices pueden interactuar de manera diferente en Java. Considere el siguiente código:

ArrayList a = new ArrayList();

Este código se compila exitosamente, creando una ArrayList genérica llamada a. Sin embargo, el siguiente código no se puede compilar:

ArrayList[] a = new ArrayList[10];

¿Por qué ocurre esto? Parece que las matrices y los genéricos son incompatibles. Para entender esto, exploremos el borrado de tipos en Java.

Borrado de tipos: detrás de escena

Cuando Java se compila, realiza el borrado de tipos, que reemplaza la información de tipos genérica con tipos sin formato (Objeto). Esto evita errores como colocar una cadena en una ArrayList de enteros. Sin embargo, las matrices requieren un tipo sin formato y los genéricos no se pueden representar como tipos sin formato.

Solucionar el problema de la matriz

Para crear una matriz de elementos genéricos, puede explícitamente convierta la matriz al tipo deseado:

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

Esta conversión instruye al compilador que la matriz debe considerarse una matriz de ArrayLists con elementos clave.

Lista de listas: la excepción

En Java, una lista de listas no se considera una matriz . Por lo tanto, el siguiente código se compila sin conversión de tipos:

ArrayList> b = new ArrayList>();

Esta distinción surge porque ArrayList es un tipo que no es de matriz.

Conclusión

Las matrices y los tipos genéricos tienen limitaciones en Java debido al borrado de tipos. Sin embargo, al convertir explícitamente matrices al tipo genérico deseado o usar listas de listas, se pueden sortear estas limitaciones y usar tipos genéricos de manera efectiva en ambos contextos.

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3