代码之家  ›  专栏  ›  技术社区  ›  Sudix

int[]和Integer[]之间的区别以及为什么它们被区别对待?[副本]

  •  0
  • Sudix  · 技术社区  · 6 年前

    Arrays.asList(T... a) .
    在第一个例子中,我输入了一个 Integer[] int[] ,这是让我困惑的部分,在这两个案例中,结果是 List<...> 是不同的:

    Integer[] arrayBoxed = new Integer[10];
    List<Integer> list = Arrays.asList(arrayBoxed);
    

    它非常短,没有设置arrayBoxed中的任何值,但是它可以工作,并生成一个 List<Integer>

    int[] array = new int[10];
    List<int[]> list = Arrays.asList(array);
    

    在这种情况下,出于某种原因,我得到了 List<int[]> ,这是一个相当病态的构造。

    为什么?

    Arrays.asList ,我希望这两个函数输出相同的结果(两个代码段都是完全功能的)。但是,有一次该方法返回 列表<整数> 列表<int[]>

    1 回复  |  直到 6 年前
        1
  •  3
  •   ernest_k Petronella    6 年前

    Arrays.asList 接受引用类型的数组,而不是基元类型。

    所以,当你打电话的时候 Arrays.asList(int[]) ,引用类型为 int[] (数组类型),这就是为什么结果是 List<int[]>

    Integer 是引用类型,这解释了为什么 List<Integer> 是返回类型。