import edu.umd.cs.findbugs.annotations.NonNull; import edu.umd.cs.findbugs.annotations.CheckForNull; public class AnnotationDemo { @NonNull private Object returnNonNull() { // ERROR: returnNonNull() may return null, but is declared @Nonnull return null; } @CheckForNull private Object returnNullable() { return null; } public void testReturnNullable() { Object obj = returnNullable(); // ERROR: Possible null pointer dereference due to return value of called method System.out.println(obj.toString()); } private void argumentNonNull(@NonNull Object arg) { System.out.println(arg.toString()); } public void testArgumentNonNull() { // ERROR: Null passed for non-null parameter of argumentNonNull(Object) argumentNonNull(null); } public void testNullableArgument(@CheckForNull Object arg) { // ERROR: arg must be non-null but is marked as nullable System.out.println(arg.toString()); } }