A very good follow up question. I consider null
a truly special value, and if a method may return null
it must clearly document in the Javadoc when it does (@return some value ..., or null if ...
). When coding I’m defensive, and assume a method may return null
unless I’m convinced it can’t (e.g., because the Javadoc said so.)
People realized that this is an issue, and a proposed solution is to use annotations to state the intention in a way it can be checked automatically. See JSR 305: Annotations for Software Defect Detection, JSR 308: Annotations on Java Types and JetBrain’s Nullable How-To.
Your example might look like this, and refused by the IDE, the compiler or other code analysis tools.
@NotNull
public Object methodWhichCannotReturnNull(int i) throws Exception
{
return null; // this would lead to a compiler error!
}