1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
|
import edu.umd.cs.findbugs.annotations.*;
public class FindBugs {
@CheckForNull
Object getNull() {
return null;
}
@NonNull MyList<@org.checkerframework.checker.nullness.qual.Nullable Object> getListOfNulls() {
// :: error: (return.type.incompatible)
return null; // error
}
void test() {
Object o = getNull();
// :: error: (dereference.of.nullable)
o.toString(); // error
MyList<@org.checkerframework.checker.nullness.qual.Nullable Object> l = getListOfNulls();
l.toString();
// :: error: (dereference.of.nullable)
l.get().toString(); // error
}
}
class MyList<T extends @org.checkerframework.checker.nullness.qual.Nullable Object> {
T get() {
throw new RuntimeException();
}
}
|