Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使变量方法将单个数组作为varargs数组的第一个值?_Java_Arrays_Variadic Functions - Fatal编程技术网

Java 如何使变量方法将单个数组作为varargs数组的第一个值?

Java 如何使变量方法将单个数组作为varargs数组的第一个值?,java,arrays,variadic-functions,Java,Arrays,Variadic Functions,鉴于变量: Object[]ab=新对象[]{“a”,“b”}; 对象[]cd=新对象[]{“c”,“d”}; 调用以下方法时: publicstaticvoidm(对象…对象){ System.out.println(Arrays.asList(objects)); } 使用: m(ab,cd); 我得到了预期的输出: [[Ljava.lang.Object;@3e25a5[Ljava.lang.Object;@19821f] 但在使用时: m(ab); 我得到: [a,b] 因为

鉴于变量:

Object[]ab=新对象[]{“a”,“b”};
对象[]cd=新对象[]{“c”,“d”};
调用以下方法时:

publicstaticvoidm(对象…对象){
System.out.println(Arrays.asList(objects));
}
使用:

m(ab,cd);
我得到了预期的输出:

[[Ljava.lang.Object;@3e25a5[Ljava.lang.Object;@19821f]
但在使用时:

m(ab);
我得到:

[a,b]

因为
strings在传递时键入它,您将得到您想要的-

m((Object)ab);

除了@Sudhansu所建议的之外,您还可以如下定义变量,这样在传递单个数组时就不必费心在方法调用中强制转换了

Object ab = new Object[] { "a", "b" };
Object cd = new Object[] { "c", "d" };

接受
Object[]
并将其传递到
m
的重载可能是一种解决方法。@defaultlocale您不能在字节码级别表示这样的重载,因为它会导致重复签名。@MarkoTopolnik感谢您指出这一点。手工没有编译器,因此,这是一条愚蠢的注释。