误解了java中的泛型

时间:2017-11-22 22:03:39

标签: java arrays list generics

我试图理解Java中的泛型。

private List<Own> l = new ArrayList<Own>();

我有以下错误:

no instance of Typed array variable T exist so that List<Own> conform to T[]

当我在一个期望T []。

的方法(readTypedArray)中传递它时
private List<Own> list = new ArrayList<Own>();

private OwnParceable(Parcel in) {
    in.readTypedArray(list, CategoriesParceable.CREATOR);
}

3 个答案:

答案 0 :(得分:3)

方法in.readTypedArray()需要一个数组T[],但您传递了一个不是数组的List<Own

List不是array,您无法在需要数组的地方使用它,List是一个扩展Collection的接口,而array是Java中的数据结构,请查看 Difference between List and Array 以获取更多详细信息。

您可以声明Own[]而不是List<Own>或将此列表转换为数组,然后再将其传递给方法,请检查Convert list to array in Java

in.readTypedArray(list.toArray(new Own[list.size()]), CategoriesParceable.CREATOR);

答案 1 :(得分:1)

这与泛型无关 - List和数组只是两个不同的东西。如果你的方法需要一个数组,你需要传递一个数组,而不是List:

Own[] arr = new Own[10]; // Or some size that makes sense...
in.readTypedArray(arr, CategoriesParceable.CREATOR);

答案 2 :(得分:0)

有可能创建一个填充了指定List内容的数组。为此,您可以调用列表引用的方法toArray(),例如:

Integer[] array = list.toArray(new Integer[list.size()]);