import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; interface NonnullInterface { @NotNull Object nonNullMethod(); } class P2 { private void callTest() { test(new NonnullInterface() { @Nullable @Override public String nonNullMethod() { return null; } }); test(this::getNull); test(this::getPrimitive); test(this::getNonAnnotated); test(WithImplicitConstructor::new); test(WithExplicitConstructor::new); } @Nullable String getNull() { return null; } String getNonAnnotated() { return null; } boolean getPrimitive() { return true; } private void test(final NonnullInterface function) { } } class WithImplicitConstructor {} class WithExplicitConstructor { WithExplicitConstructor() {} }