JSR 305 proposes adding anotations for defect detections, One enhancements proposed in this JSR is a null check annotation, Find Bugs and IntelliJ already provides support for this. When you use the @NotNull annotation you are defining that your code will not except a null parameter, if you were to provide a null parameter, the annotation would throw a RuntimeException. IntelliJ has integrated its use into the IDE, hence at compile time you you can be warned when you are about to assign NULL to a field that has been annotated as @NotNull.

The argument against using anotiations is that they should not to be used for language features. Also using the @NotNull annotation does reduce code clarity. Personally, once I got used to reading code littered with annotations, I did not find this an issue.