鉴于变量:如何使一个变量方法将单个数组作为可变参数数组的第一个值?
Object[] ab = new Object[] { "a", "b" };
Object[] cd = new Object[] { "c", "d" };
当调用下面的方法:
public static void m(Object... objects) {
System.out.println(Arrays.asList(objects));
}
使用:
m(ab, cd);
我得到预期的输出:
[[Ljava.lang.Object;@3e25a5, [Ljava.lang.Object;@19821f]
但在使用时:
m(ab);
我得到:
[a, b]
由于strings <- ab
而不是strings[0] <- ab
。
我怎样才能力编译器采取ab
阵列作为strings
阵列的第一个值,然后将具有输出:
[Ljava.lang.Object;@3e25a5
?同时通过
接受'Object []'并将它传递给'm'的重载可能是一个解决方法。 – 2013-03-19 09:11:43
@defaultlocale您不能在字节码级别表示这样的重载,因为它会导致重复的签名。 – 2013-03-19 09:37:19
@MarkoTopolnik感谢您指出了这一点。手工没有编译器,因此是一个愚蠢的评论。 – 2013-03-19 09:52:10