我试图理解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);
}
答案 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()]);