代码之家  ›  专栏  ›  技术社区  ›  Manuel Selva

数组的常规列表

  •  2
  • Manuel Selva  · 技术社区  · 14 年前

    如何删除:

    类型安全:类型的表达式 List<Object>[]

    List<Object>[] arrayOfList = new List[10];
    
    5 回复  |  直到 14 年前
        1
  •  2
  •   musiKk    14 年前

    @SuppressWarnings("unchecked") . 至少如果你想避免马修答案中出现的原始类型警告。

    但你应该重新考虑你的设计。一组列表?那真的有必要吗?为什么不列个单子呢?如果它变得太复杂(列表的列表映射到…),请使用自定义数据类型。这确实使代码更具可读性。

    作为一个无关的旁注:你应该写 List<Object>[] arrayOfList . 括号是类型的一部分,而不是变量。

        2
  •  1
  •   jvdneste    14 年前

    @SuppressWarnings("unchecked")
    final List<Object> arrayOfList[] = new List[10];
    
        3
  •  1
  •   Matthew Flaschen    14 年前
    List arrayOfList[] = new List[10];
    

    List[] arrayOfList = new List[10];
    

    <Object> ,这意味着您的列表将包含任何对象。但通用数组的缺陷仍然存在。

        4
  •  1
  •   Andrei Fierbinteanu    14 年前

    1. 您可以在赋值之前添加“@SuppressWarnings”(“unchecked”),告诉编译器忽略警告
    2. 使用原始类型 List[] arrayOfList = new List[10];
    3. 不要使用数组,将集合与数组混合使用通常是个坏主意: List<List<Object>> listOfList = new ArrayList<List<Object>>;
        5
  •  0
  •   Jesper    14 年前

    不幸的是,由于泛型是使用 type erasure ,则不能使用类型参数创建类型的数组:

    // This will give you a compiler error
    List<Object>[] arrayOfList = new ArrayList<Object>[10];
    

    看到了吗 this 在Angelika Langer的Java泛型FAQ中,可以获得详细的解释。

    List<List<Object>> data = new ArrayList<List<Object>>();