La diferencia entre List List & ltObject & gt List & lt? & Gt

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();

 

Supongo que te gusta

Origin blog.csdn.net/qq_28411869/article/details/87880039
Recomendado
Clasificación