首页 > 解决方案 > List中的java泛型语句

问题描述

有人可以总结一下有什么区别:

List<SpecificType>
List<Object>
List

假设我有:

class Car {
    void foo() {}
}

public class Generics_Statement {

    public static void main(String[] args) {
        Car c1 = new Car();
        Car c2 = new Car();
        Car c3 = new Car();

        List<Car> carList = List.of(c1,c2,c3);
        System.out.println(carList.get(0).getClass());      // >>> class Car
        System.out.println(carList.get(0) instanceof Car);  // >>> true

        carList.get(0).foo();

        List<Object> objList = List.of(c1,c2,c3);
        System.out.println(objList.get(0).getClass());      // >>> class Car
        System.out.println(objList.get(0) instanceof Car);  // >>> true
        // objList.get(0).foo();


        List rawList = List.of(c1,c2,c3);
        System.out.println(rawList.get(0).getClass());      // >>> class Car
        System.out.println(rawList.get(0) instanceof Car);  // >>> true
        // rawList.get(0).foo();

    }
}

我确实理解声明正确类型的重要性,绝对应该List<Car>在这里使用。

我明白应该避免使用原始类型。

而且我理解一个事实objList并且rawList不能使用Car.foo,因为我没有明确声明中的类型List

我不明白的是:

  1. 似乎它仍然识别 and 中的元素objListrawList并返回正确的类并确认该元素是 的实例Car。为什么?如果它知道Class元素的,它不应该能够调用Car.foo吗?
  2. List<Object>List一样的东西吗?
  3. 还有其他我不知道的区别吗?

标签: javagenerics

解决方案


推荐阅读