Java varargs可以为null吗?

Sup*_*tar 11 java variadic-functions null-check

我发现自己检查了这一点,并询问是否有必要.我有这样的代码:

public Object myMethod(Object... many) {
  if (many == null || many.length == 0)
    return this;
  for (Object one : many)
    doSomethingWith(one);
  return that;
}
Run Code Online (Sandbox Code Playgroud)

但后来我想知道......我是否过于谨慎?我需要检查一下many == null吗?在任何当前的Java版本中都有可能吗?如果是这样,怎么样?如果没有,我可能会继续检查,只是为了防止以后Oracle确定它有一天可以为空.

Dav*_*ave 15

我试过了 Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0 on Linux 3.5.0-21-generic

使用myMethod(null)不通过new Object[]{null},它通过null.数组是Java中的对象,因此null对于类型有效Object[].

因此,您的nullcheck不是过于谨慎.