Some argue that allowing null into the API of a class, in the form of possibly-null parameters or return values, should be avoided if possible:
- null references can only be used in a boolean test - any other use will throw a NullPointerException
- null references always represent special cases, and if these special cases can be removed, the code will be easier to understand
- null return values are error prone, since there is no way to ensure that the caller always does a check-for-null.
- methods which accept an explicit null reference as a valid argument are less intelligible at the point of call. The reader will usually need to consult documentation to determine what exactly the null argument means.
There is a very common exception to this rule. For Model Objects,
which map roughly to database records, it's often appropriate to use null
to represent optional fields stored as NULL in the database.