Can constructor return a null object?
No, it has never been possible. Maybe a previous version of the code used some factory method which could return null:
MyObject o = createMyObject("parameter");
if (o == null) o = createMyObject("fallback parameter");
From section 15.9.4 of the JLS:
The value of a class instance creation expression is a reference to the newly created object of the specified class. Every time the expression is evaluated, a fresh object is created.
So no, it can never return null.
My guess is that it was written by a C programmer who is used to testing the return value of malloc()
for NULL
, malloc()
can return NULL
if your system runs out of memory.
The code doesn't make sense in Java since Java will throw an OutOfMemoryError` if it runs out of memory.
The code is dead in any version of Java. It's not possible for a constructor to return null
, and even if an exception would be thrown from the constructor, the next line won't be called.