Java Arrays.asList(int[])如何返回列表<;int[]>;?

Java Arrays.asList(int[])如何返回列表<;int[]>;?,java,Java,在做简单的程序时,我注意到了这个问题 int[] example = new int[10]; List<Integer> exampleList = Arrays.asList(example);// Compilation error here 因此它将int[]视为T,这就是为什么会发生这种情况。在数组中没有对底层int进行自动装箱。asList int[]实际上是一个对象,而不是原语 这里Arrays.asList(示例)返回List列表确实是无效语法 您可以使用:

在做简单的程序时,我注意到了这个问题

int[] example = new int[10];
List<Integer> exampleList = Arrays.asList(example);// Compilation error here  

因此它将int[]视为T,这就是为什么会发生这种情况。

数组中没有对底层int进行自动装箱。asList

  • int[]
    实际上是一个对象,而不是原语

  • 这里
    Arrays.asList(示例)
    返回
    List
    <代码>列表确实是无效语法

  • 您可以使用:

    List exampleList=Arrays.asList(ArrayUtils.toObject(array))

    使用Apache Commons
    ArrayUtils


数组是java中的对象,而不是基本类型。请注意,它说的是
List
(int数组列表),而不是
List
数组。asList(…)
可以完美地将对象数组转换为这些对象的列表

<>代码>数组.aslist(…)<代码>在java 5中用Valg构造定义,或者,按顺序,它可以接受一个未定义的参数数量,在这种情况下,它将把所有这些参数看作数组的成员,然后返回包含这些元素的<代码>列表实例。
List<Object> objList = Arrays.asList(obj1, obj2, obj3);
签名
List asList(T…os)
涉及一个泛型类型
T
。泛型类型的范围仅包括引用类型(包括数组类型),而不包括基元类型。因此,在使用
int[]ints
调用
Arrays.asList(ints)
时,
T
只能解析为
int[]

在更高的层次上,
Arrays.asList
的目的是提供数组的列表视图。这意味着数组保持不变,其元素通过实现
列表的对象可用。但是,
List
s只能包含对象,并且数组包含基元
int
s。这使得数组无法通过
列表
接口公开


无论如何,如果您正在寻找一种优雅的语法来创建一个
整数列表
,请编写
数组。asList(1,2,3)

相关:您想知道
数组是如何实现的。asList
可以返回一个
列表
,但您收到的错误消息清楚地表明您是
列表
,而不是
列表
List<Object> objList = Arrays.asList(obj1, obj2, obj3);
List<Object> objList = Arrays.asList(obj1);
List<int[]> intArrayList = Arrays.asList(new int[]{ 1, 2, 3 });