30

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.

4
  • @sdotdi what would I try? Would myMethod(null) not pass it an array like new Object[]{null}?
    – Ky -
    Commented Feb 2, 2015 at 4:40
  • As a side note, the code you have here is a code smell. Passing in a varargs object array means that your method can accept anything. I can imagine specific situations where this might be useful, but I would say that this is generally something to avoid. Commented Feb 2, 2015 at 4:44
  • 2
    ideone.com/wP9AFE Commented Feb 2, 2015 at 4:47
  • 2
    As IDEA suggests, null can be explicitly passed to varargs methods with cast - (Object[]) null, so yes, passing null is possible in Java and your check makes sense Commented Feb 4, 2021 at 9:30

1 Answer 1

40

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.

Not the answer you're looking for? Browse other questions tagged or ask your own question.