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"); String s = Objects.requireNonNull(" x "); String s1 = trim(" x "); } @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); } }