6

给定变量:

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

?

4

2 回答 2

9

通过时输入它,你会得到你想要的 -

m((Object)ab);
于 2013-03-19T09:12:28.543 回答
3

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

Object ab = new Object[] { "a", "b" };
Object cd = new Object[] { "c", "d" };
于 2013-03-19T09:18:57.427 回答