的第二個對象的顏色值爲null,當它通過流管道時,它檢查null上的equals(),但令人驚訝的是不引發NullPointerException。這是爲什麼?爲什麼在下面的Java Stream過濾器方法中不拋出NullPointerException
包神話;
import java.util.stream.Stream;
class Blankie {
String color = null;
boolean isPink() {
return "pink".equals(color);
}
}
public class PreSchool {
public static void main(String[] args) {
Blankie b1 = new Blankie();
Blankie b2 = new Blankie();
b1.color = "pink";
// String a1 = null;
// System.out.println(a1.equals("ad"));
Stream.of(b1, b2).peek(a -> {
System.out.print(a.color);
}).filter(Blankie::isPink).forEach(System.out::println);
}
}
這就是因爲你在做「粉紅色」.equals(顏色)而不是color.equals(「粉紅色」)。 –
@ melli-182謝謝。這是我犯的錯誤。 – Srinivasan