我有这个:
import java.util.Arrays; import java.util.ArrayList; public class Test1 { public static void main(String[] args) { double[] a = new double[2]; for( double d : Arrays.asList(a)) System.out.println(d); } }
输出:
$ javac Test1.java Test1.java:9: error: incompatible types for( double d : Arrays.asList(a)) ^ required: double found: double[] 1 error
为什么我在这里出错?
和
错误的含义是什么? 它告诉我什么?
您在这里遇到错误,是因为当您使用接受varargs的函数时,此函数在幕后创建了您在其中传递的对象的新数组。因此,Arrays.asList(1,2,3)实际上得到 了一个整数数组 。 当您传递整数 数组时,请 在后台Arrays.asList()创建 一个 整数 数组数组 。这就是为什么您不能通过以下循环对其进行迭代:
Arrays.asList(1,2,3)
Arrays.asList()
for( double d : Arrays.asList(a))
尝试像这样更改它:
for(double[] d : Arrays.asList(a))
d实际上,您将看到对传递给Arrays.asList()- 的数组的引用a。
d
a