Java arraylist无法使用arrays.aslist找到构造函数

Java arraylist无法使用arrays.aslist找到构造函数,java,arrays,generics,arraylist,Java,Arrays,Generics,Arraylist,我在代码中使用了Arrays.asList().contains()方法,如顶部答案所示:,因此我将在代码中使用Arrays.asList() 但是,编译器拒绝以下代码。是因为我的素数数组使用了原语,而不是引用类型吗?我不这么认为,因为自动装箱,但我只是想检查一下 import java.math.*; import java.util.ArrayList; import java.util.Arrays; public class .... { public static void

我在代码中使用了Arrays.asList().contains()方法,如顶部答案所示:,因此我将在代码中使用Arrays.asList()

但是,编译器拒绝以下代码。是因为我的素数数组使用了原语,而不是引用类型吗?我不这么认为,因为自动装箱,但我只是想检查一下

import java.math.*;
import java.util.ArrayList;
import java.util.Arrays;

public class .... {
    public static void main(String[] args) {
        int[] primes = formPrimes(15);
        ArrayList<Integer> primes1 = new ArrayList<Integer>(Arrays.asList(primes));
        // Rest of code...
    }

    public static int[] formPrimes(int n) {
        // Code that returns an array of integers
    }
}
import java.math.*;
导入java.util.ArrayList;
导入java.util.array;
公共课。。。。{
公共静态void main(字符串[]args){
int[]素数=形式素数(15);
ArrayList primes1=新的ArrayList(Arrays.asList(primes));
//代码的其余部分。。。
}
公共静态int[]formPrimes(int n){
//返回整数数组的代码
}
}
我得到一个错误,一个找不到符号的错误

符号:构造函数ArrayList(java.util.List)

位置:类java.util.ArrayList ArrayList primes1=新的ArrayList(Arrays.asList(primes))


基本上,我有一个返回整数数组的函数,我想把它转换成数组列表,但是我在使用ArrayList构造函数时遇到了麻烦。

是的。自动装箱不适用于数组,仅适用于原语

我在eclipse中遇到的错误是
构造函数数组列表(列表)未定义


这是因为ArrayList中的构造函数被定义为
公共ArrayList(集合
primes
是一个基元
int
类型的数组;该类型不是从
Object
派生的,因此可以自动放入
列表中(与所有
集合
一样,它只能容纳
对象
s)。@Justin是对的;您需要手动将数组中的项添加到列表中。

如果您这样做是为了访问包含项 方法你也可以自己写

public boolean contains(int[] array, int item) {
  for (int element: array)
    if (element == item)
      return true;

  return false;
}

事实上,我认为这可能是因为Arrays.asList返回的是一个列表,而不是数组列表。是这样吗?不,不是这样的——ArrayList和list都是一个集合,这是ArrayList构造函数所期望的。这是因为您在混合类型。我认为问题更多地在于,您不希望有数组列表,而不是数组中的项目列表。Andrew,这也解释了为什么我的类似代码使用Arrays.asList()处理字符串数组,因为字符串显然是一种有效的泛型类型。谢谢你的解释!是的,这是另一种选择。我试图访问contains方法,我想我没有真正想到这一点。
public static <T> List<T> asList(T... a) {
    return new ArrayList<T>(a);
}
public boolean contains(int[] array, int item) {
  for (int element: array)
    if (element == item)
      return true;

  return false;
}