Có lý do / tình huống nào mà tôi nên sử dụng object == null trên Objects.isNull () trong câu lệnh if không?
Có, một lý do là để giữ cho mã đơn giản. Trong if tuyên bố object == null
rõ ràng và nổi tiếng. Nó không thể dẫn đến bất kỳ hành vi sai trái nào nếu ví dụ như có lỗi đánh máy.
Sự hiểu biết của tôi là Objects.isNull () sẽ loại bỏ cơ hội vô tình gán giá trị null cho đối tượng bằng cách bỏ qua dấu = thứ hai.
Nếu có một if (object = null) {}
với bỏ qua, =
nó sẽ không biên dịch hoặc nó sẽ tạo ra cảnh báo trong trường hợp Boolean
đối tượng! Trên thực tế không có lý do để sử dụng Objects.isNull(object)
trên object == null
trong câu lệnh if . Đây là hai biến thể cạnh nhau:
if (object == null) {
}
if (Objects.isNull(object)) {
}
Objects.isNull () có nên được giới hạn dành riêng cho Predicates không?
Có thể nói là có, nó chỉ giới hạn trong Predicates, mặc dù không có trở ngại kỹ thuật nào để sử dụng Objects.isNull()
ở mọi nơi.
Từ public static boolean isNull(Object obj)
javadoc của phương thức:
@apiNote Phương thức này tồn tại để được sử dụng như một java.util. Chức năng.Predicate, bộ lọc (Objects :: isNull)
Vì vậy, nếu bạn sử dụng phương thức không phải là một vị từ, bạn thực sự đang sử dụng một biểu thức phức tạp và rườm rà hơn so với biểu thức đơn giản object == null
.
Đây là một đoạn mã để so sánh lợi ích của Objects.isNull(object)
List<String> list = Arrays.asList("a", "b", null, "c", null);
long countNullsWithPredicate = list.stream().filter(Objects::isNull).count();
long countNullsWithLambda = list.stream().filter(object -> object == null).count();
long countNullsWithAnonymous = list.stream().filter(new Predicate<Object>() {
@Override
public boolean test(Object obj) {
return obj == null;
}
}).count();
if(null == variable)
liên tục ...