Can a Java varargs be null?

Ky Leggiero picture Ky Leggiero · Feb 2, 2015 · Viewed 15.6k times · Source

I found myself checking for this and asking if it's necessary. I have code like this:

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

But then I wondered... Am I being too cautious? Do I have to check if many == null? Is that ever possible in any current Java version? If so, how? If not, I'll probably keep checking, just for futureproofing in case Oracle decides it can be null one day.

Answer

Dave picture Dave · Feb 2, 2015

I tried it with Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0 on Linux 3.5.0-21-generic

Using myMethod(null) doesn't pass new Object[]{null}, it passes null. Arrays are objects in Java and therefore null is valid for the type Object[].

Your nullcheck is, therefore, not overly cautious.