Ideally, as the article suggests, you should use a language which supports null and not-null types, with compile errors if you call a method on a type that might be null before checking to make sure it’s not null.<p>However, if you’re stuck with Java, which doesn’t do that, you can annotate your types with @Nonnull and @CheckForNull. (At least) SpotBugs and IntelliJ respect such annotations.<p>I have done this to every parameter type, return type, and instance variable on a 15 KLOC codebase and it’s been a great success.