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("");
}
}
}