Относительно пары ответов, могу ли я предложить вместо того, чтобы написать что-то вроде:
boolean compare(Object o1, Object o2)
{
if (o1==null)
return o2==null;
if (o2==null)
return false;
return o1.equals(o2);
}
Это гораздо более кратко, и я считаю, что немного более эффективно, написать:
boolean compare(Object o1, Object o2)
{
return o1==o2 || o1!=null && o2!=null && o1.equals(o2);
}
Если оба значения равны нулю, o1 == o2 вернет true. Если это не так, но это один и тот же объект, это тоже хорошо.
Технически, o2! = Null не является необходимым для большинства реализаций equals, но если бы вы действительно были настолько универсальны, чтобы сделать это на объектах, как в приведенном выше примере, вы, конечно, не знали бы, как записывалось каждое переопределение .