我在sonarqube发现了一种奇怪的行为,我不知道它是不是一个bug,或者我只是不太了解lambdas的机制。
在我们的代码库中,我们有一些代码:
@Nullable
private Runnable nulltest(@Nullable String myNullableString) {
if(myNullableString == null) {
return null;
}
return () -> System.out.println("This string is not null: " + myNullableString);
}
这个代码很好,sonarqube没有问题。 但是,如果我将代码改为使用lambdas,那么:
BSTR
然后我收到以下错误: FindBugs的:NP_PARAMETER_MUST_BE_NONNULL_BUT_MARKED_AS_NULLABLE myNullableString必须为非null,但标记为可为空
所以我不明白为什么它曾经是一个问题而另一个时间不是。这是一个错误还是lambda版本和此方法的匿名类版本之间存在真正的区别?