Trong Java, tôi sử dụng một lớp trong đó một số trường có thể là null
. Ví dụ:Việc cần làm với các trường rỗng trong so sánh()?
class Foo {
String bar;
//....
}
Tôi muốn viết một BarComparator cho lớp này,
private static class BarComparator
implements Comparator<Foo> {
public int compare(final Foo o1, final Foo o2)
{
// Implementation goes here
}
}
Có một cách tiêu chuẩn để đối phó với thực tế là bất kỳ o1
, o2
, o1.bar
, o2.bar
có thể null
, mà không cần viết nhiều lồng nhau if
... else
?
Chúc mừng!
Tắt chủ đề tôi biết, nhưng lý do thích MIN/MAX_VALUE hơn -/+ 1 là gì? –
Xin lỗi vì sự chậm trễ trả lời. Đó là để đảm bảo chúng ta có sự bất bình đẳng tam giác. Đối với a> b> c, a.compareTo (b) + b.compareTo (c) <= a.compareTo (c). Không phải ai cũng quan tâm ... –
Vẫn có thể ném 'NullPointerException', nếu o1/o2 là null. Làm thế nào bạn nên điều trị o1/o2 là null? OP được đề cập: o1, o2, o1.bar, o2.bar có thể rỗng. Hoặc là một phần của một hợp đồng so sánh: so sánh nulls nên ném một NPE? – Daniel