import org.jetbrains.annotations.*; import java.util.*; abstract class ObviousNullCheck { abstract String getFoo(); abstract String getBar(); void test(String param) { assertNotNull(5 + 6); assertNull("Null!", param); assertNull(param, "Null!"); Objects.requireNonNull(null); Objects.requireNonNull("xyz", "xyz"); Objects.requireNonNull((getFoo() + getBar())); Objects.requireNonNull(new ArrayList(), "new returned null"); Objects.requireNonNull(this); String s = Objects.requireNonNull(" x "); String s1 = trim(" x "); System.out.println(inferred("foo")); } static String concat(String s, String m) { if(s == null) throw new NullPointerException(); return s+m; } void testStrings(List list) { list.forEach(s -> concat("Not null!", s)); list.stream().map(s -> concat("Not null!", s)).forEach(System.out::println); } @Contract(value="null -> fail", pure=true) String trim(String s) { return s.trim(); } @Contract(value="null -> fail", pure=true) static void assertNotNull(Object obj) { if(obj == null) throw new NullPointerException(); } @Contract(value="_,!null -> fail", pure=true) static void assertNull(String msg, Object obj) { if(obj != null) throw new NullPointerException(msg); } static String inferred(String str) { if(str == null) throw new IllegalArgumentException(); return str; } class X { private String foo; X(String f) { if(f == null) throw new NullPointerException(); this.foo = f; } X() { this(""); } } }