Java 7 đã giới thiệu lớp Objects
chứa các phương pháp “null
an toàn hoặc null
-tolerant”, bao gồm compare(T, T, Comparator<T>)
. Nhưng khi tôi sẽ không bao giờ sử dụngMục đích của phương thức Objects.compare() là gì?
Objects.compare(left, right, comparator);
hơn chỉ đơn giản gọi
comparator.compare(left, right);
?
Objects.compare
chỉ là null
đã an toàn nếu comparator
cũng vậy, vậy tại sao tôi nên thực hiện cuộc gọi so sánh? Việc tối ưu hóa kiểm tra đầu tiên đối với nhận dạng đối tượng có vẻ giống như một cái gì đó cần được thực hiện trong chính bộ so sánh. Và sự khác biệt thực sự duy nhất trong hành vi tôi có thể thấy là comparator.compare(left, right)
ném một NullPointerException
nếu tất cả comparator
, left
và right
là null
, trong khi Objects.compare
thì không; điều này dường như không thực sự quan trọng để đảm bảo một phương pháp thư viện chuẩn mới.
Tôi có thiếu điều gì đó hiển nhiên ở đây không?
Phương pháp này là hoàn toàn ngu ngốc, tôi đồng ý. [Đặt hàng 'của ổi] (https://code.google.com/p/guava-libraries/wiki/OrderingExplained) thực hiện một công việc tốt hơn để giải quyết vấn đề đó. –
Phương pháp này không được sử dụng ở bất kỳ đâu trong JDK :) có thể vô ích. – ZhongYu
điều duy nhất phương pháp này làm là kiểm tra xem cả hai đối số là null, trong trường hợp so sánh của bạn không kiểm tra cho trường hợp đó. khá vô dụng, giống như hầu hết các lớp học – njzk2