Los genéricos de las colecciones en Java son para evitar entradas erróneas, y solo son válidos durante la fase de compilación, y omitir la compilación en el tiempo de ejecución no es válido.
Vamos a verificar con un ejemplo
/ ** * La esencia de los genéricos de la colección * @description * @author Trigl * @date 2 de abril de 2016 2:54:11 am * / public class GenericEssence { public static void main (String [] args) { List list1 = new ArrayList (); // Sin lista genérica <String> list2 = new ArrayList <String> (); // Hay genérico / * * 1. Primero observe la forma normal de agregar elementos, verifique los genéricos en el compilador, * En este momento, si se agrega el tipo int a list2, se informará un error * / list2.add ( "hello" ); // list2.add (20); //¡Informar un error! List2 tiene una restricción genérica, solo puede agregar String, agregar int error System.out.println ("La longitud de list2 es:" + list2.size ()); // La longitud de list2 es 1 / * * 2. Luego pase Reflexione para agregar elementos, cargue dinámicamente la clase en tiempo de ejecución, primero obtenga el mismo tipo de tipo de list1 y list2 *, y luego omita el compilador mediante la reflexión del método para llamar al método add para ver si puede insertar elementos de tipo int * * / Class c1 = list1.getClass (); Clase c2 = list2.getClass (); System.out.println (c1 == c2); // Resultado: verdadero, que indica que el tipo de la clase es exactamente el mismo // verificación: Podemos usar la reflexión del método para Agregue elementos a list2, para que pueda omitir la verificación de compilación intente { Método m = c2.getMethod ("add", Object. Class ); // Agregue el método a través de la reflexión del método m.invoke (list2, 20); // Agregue un tipo int a list2. Lo anterior muestra que el compilador informará un error System.out.println ("La longitud de list2 es:" + list2.size ()); / / Resultado: 2, que indica que la longitud de list2 ha aumentado y no hay verificación genérica } catch (Excepción e) { e.printStackTrace (); } / * * En resumen, podemos ver que en el compilador, los genéricos limitarán la colección Los tipos de elementos internos siguen siendo los mismos, pero una vez que el compilador termina de ingresar el tiempo de ejecución *, los genéricos ya no funcionarán, incluso se pueden insertar elementos de diferentes tipos en la colección. * / } }