用单个null参数调用Java varargs方法?

如果我有一个vararg Java方法foo(Object ...arg)并调用foo(null, null),则我arg[0]arg[1]as 都将null。但是,如果我呼叫foo(null),则arg其本身为null。为什么会这样呢?

我应该怎么称呼foo这样foo.length == 1 && foo[0] == nulltrue

回答:

问题是,当你使用原义null时,Java不知道它应该是哪种类型。它可以是空对象,也可以是空对象数组。对于单个参数,假定为后者。

你有两种选择。将null显式转换为Object或使用强类型变量调用该方法。请参见下面的示例:

public class Temp{

public static void main(String[] args){

foo("a", "b", "c");

foo(null, null);

foo((Object)null);

Object bar = null;

foo(bar);

}

private static void foo(Object...args) {

System.out.println("foo called, args: " + asList(args));

}

}

输出:

foo called, args: [a, b, c]

foo called, args: [null, null]

foo called, args: [null]

foo called, args: [null]

以上是 用单个null参数调用Java varargs方法? 的全部内容, 来源链接: utcz.com/qa/402860.html

回到顶部