Я думал, что у Java есть оценка короткого замыкания, но эта строка все еще бросает исключение с нулевым указателем:
if( (perfectAgent != null) && (perfectAgent.getAddress().equals(entry.getKey())) ) {
В этом случае perfectAgent есть null, поэтому я просто хочу, чтобы все выражение возвращало false, но мое приложение все еще терпит крах в этой строке с помощью исключения NullPointerException.
EDIT, общий ответ:
Так как perfectAgent есть null, ничего справа от && не должно выполняться, так как невозможно, чтобы выражение было истинным. Более того, невозможно выполнить perfectAgent.getAddress(), поскольку perfectAgent не содержит действительной ссылки (она является нулевой и все). Я пытаюсь использовать оценку короткого замыкания, чтобы не проверять значение null в отдельном выражении, поскольку это делает логику более неаккуратной.
ИЗМЕНИТЬ 2 (или, я идиот): Да, как и многие вещи в жизни, вы выяснили ответ сразу после объявления миру, что вы идиот. В этом случае я отключил автозапуск Eclipse, когда делал что-то еще и не возвращал его обратно, поэтому я отлаживал файлы классов, которые не совпадали с моим источником.