Existe ese punto de vista: Lista y Lista <Objeto> son lo mismo
en realidad no.
Analizar desde dos aspectos, 1, restricción de tipo 2, restricción de asignación
No hay restricción en el tipo de Lista . Al agregar u obtener, el tipo de objeto recibido o devuelto es Objeto, por lo que se puede usar cualquier tipo de objeto al agregar, y el tipo de valor de retorno es Objeto al obtener. La lista tampoco tiene restricciones de asignación , es decir, se puede usar cualquier objeto que sea un tipo de colección, incluida una colección de tipo restringido.
List <Object> tiene restricciones de tipo , el tipo está restringido a Object, pero debido a que Object es el padre de todos los tipos, se puede usar cualquier tipo de objeto al agregar, y el tipo de valor de retorno al obtener también es Object. List <Object> también tiene restricciones de asignación.Solo los objetos de colección cuyo tipo es Object pueden asignarse a List <Object>.
Considere el siguiente ejemplo:
List<Integer> integerList = new ArrayList<>();
integerList.add(1);
integerList.add(2);
List list = integerList; //可以赋值List<Integer>
list.add("String"); //添加String类型的数据
System.out.println(list); //输出结果:[1, 2, String]
List<Object> objectList = integerList; //编译报错
Object[] objectArr = new Integer[]{};
PD: mire la última línea del código, las matrices pueden asignarse de esta manera
Entonces, ¿cómo se usa List <?>?
Lista <?> Indica que puede recibir cualquier tipo de colección antes de que se asigne, pero una vez asignada, solo puede eliminar y borrar, pero no agregar. A menudo se utiliza como parámetro para recibir una colección externa o para devolver una colección que no conoce el tipo específico. Mira el siguiente ejemplo:
List<?> list1 = integerList;
list1.add(3); //编译报错
list1.remove(1);
list1.clear();