每当我将两个1-d数组作为参数传递给2-d var-arg方法时,它工作正常但如果我尝试将相同的两个1-d数组传递给具有简单2-d参数的方法它给了我错误 - The method m1(int[][]) in the type Asd is not applicable for the arguments (int[], int[])
。
根据我的知识int [] ... ==> int [] [],那么这种行为背后的原因是什么?
Var-Arg方法
public class Asd {
public static void main(String[] args) {
m1(new int[] {6,7},new int[] {8,9});
}
public static void m1(int[]... b)
{
System.out.println(b[0][0]);
}
}
简单方法: -
public class Asd {
public static void main(String[] args) {
m1(new int[] {6,7},new int[] {8,9});
}
public static void m1(int[][] b)
{
System.out.println(b[0][0]);
}
}
答案 0 :(得分:0)
当多个参数传递给方法时,java编译器可能会将代码转换为作为给定类型的对象数组传递。
这就是当你尝试传递多个参数并且接收类型不是var-args的原因时,编译器会抱怨不同的数据类型。因为它们彼此不兼容。
您仍然可以通过创建二维数组来传递参数:
public static void main(String[] args) {
m1( new int[][]{new int[]{6, 7}, new int[]{8, 9}} );
}
private static void m1(int[][] b) {
System.out.println( b[0][0] );
}