Ude*_*ara 2 java arrays compilation variadic-functions
我有这样的方法。
void method(int[] ...x){}
Run Code Online (Sandbox Code Playgroud)
并且我可以使用method(new int[]{1,2,3,4});
它来调用方法。但是编译器也会编译此2d数组类型。
method(new int[][]{new int[]{1,2,3},new int[]{4,5,6}});
Run Code Online (Sandbox Code Playgroud)
我想知道原因。 方法具有一维数组类型引用。但是编译器接受二维数组类型。
可变参数方法的基本类型
function(Object... args)是function(Object[] args)
因此,an Object...只是一个语法糖Object[]。
因此,void method(int[] ...x){}以您的情况为例,以1D数组为参数的方法应被理解为void method(int[][] x){}以2D数组为参数。
因此,它将编译并且也不会给出运行时错误。