【问题标题】:misunderstanding the generic in java误解java中的泛型
【发布时间】:2017-11-22 22:03:38
【问题描述】:

我正在尝试理解 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);
}

【问题讨论】:

  • List 不是 []

标签: java arrays list generics


【解决方案1】:

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

List 不是array 你不能在需要数组的地方使用它,List 是扩展Collection 的接口,而array 是Java 中的数据结构,检查 Difference between List and Array 了解更多详情。

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-12-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多