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感谢您指出这一点。手工没有编译器,因此,这是一条愚蠢的注释。