关于将泛型Object传递给方法中的列表:将泛型Object传递给方法中的列表 – JAVA

Pass a generic Object to a list in a method - JAVA

本问题已经有最佳答案,请猛点这里访问。

我有两个问题,他们可能是愚蠢的问题,但现在我搞糊涂了。

问题1:

我有这个代码:

1
2
3
4
5
6
private List<Car> carList;

public void setData(List<Object> list)
{
    this.carListist = list;
}

但在this.carList = list上,我得到一个编译错误:incompatible types, required: List but found List

我的问题是,为什么会出现这个错误?不是列出对象类型的列表car吗?为什么不接受一个物体呢?

问题2:我将上述代码更改为以下代码,错误消失:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
private List<Object> carList;

public void setData(List<Object> list)
{
    this.carListist = list;
}


public Object getValueAt(int row, int column) {

    Car car = carList.get(row); //Compiling error here

    switch(column)
    {
        (...)
    }
    (..)

编译错误(在代码注释中签名)是incompatible types, required Car but found Object。我不明白的是,现在列表被定义为对象列表。汽车是一个物体。为什么汽车,作为一个对象,不被接受?

不管怎样,要解决问题1和2的问题吗?


并不是因为每辆车都是一个对象,所以汽车列表也是一个对象列表,在您的示例中,如果对象列表包含一条船而不是一辆车,该怎么办?