Мне нужно иметь возможность сравнивать две переменные, которые иногда могут быть нулевыми. Если они оба равны нулю, я все равно хочу, чтобы это считалось равным. Есть ли подходящий способ сделать это?java - Как сравнить два объекта, которые могут быть пустыми?
Я тестировал его в NetBeans и смотрел документацию на .equals() и видел, что нулевые ссылки ведут себя странно.
Это мои примеры и результаты:
Object a = null, b = null;
System.out.println(a == b);
возвращает TRUE.
ИЛИ:
System.out.println(a.equals(b));
бросает NullPointerException.
Работает ли я так, как я этого хочу в этом случае, или мне просто «повезет» здесь, и он пришел к выводу «правда» по какой-то другой причине?
Ошибка NullPointerException также меня сбивает с толку, так как я всегда понимал метод equals объекта как ссылочное равенство. В документации неоднократно указывается «ненулевые» объекты, но почему это имеет значение для сравнения ссылок? Любые разъяснения были бы весьма признательны.
Objects.equals (a, b); – null
Объекты не 'null'. Вам нужно начать дифференцирование между переменными, ссылками и объектами. –
@OP: Ответы, которые вы получили, помогут вам понять, что пошло не так. Но после того, как вы все это поймете, вы захотите обратить внимание на то, что предложил Гильберт, и именно этого вы и добились. – sstan