@kidar2

If (value == null || value.equals(null)))?

Увидел в чужом коде такое странное условие:
static String valueToString(Object value) throws JSONException {
        if (value == null || value.equals(null)) {
            return "null";
        }
}

Как-то может сработать второе условие без первого?
  • Вопрос задан
  • 2726 просмотров
Пригласить эксперта
Ответы на вопрос 2
@lslayer
Программист и сисадмин
Для определенного объекта может быть переопределен метод equals().
Например, по задачам бизнес-логики объект считается null если его "самоеГлавноеПоле" есть null.

В данном же случе - либо старый неисправленный код (раньше параметром приходил не Object а что-то другое) либо банальная ошибка.

А вообще, в случае с пользовательским классом второе условие без первого может сработать.
Например:
package tk.lslayer.temp;

public class NullComparator {
    public Integer someField = null;

    @Override
    public boolean equals(Object obj) {
        if (obj == null && someField == null) return true;
        if (obj != null && obj instanceof NullComparator) {
            return ((NullComparator) obj).someField == someField ? 
                true : false;
        } else return false;
    }

    public static void main(String[] args) {
        NullComparator comparator1 = new NullComparator();
        
        if (comparator1 == null)
            System.out.println("!= null");
        if (comparator1.equals(null)) 
            System.out.println(".equals(null)");
    }
}
Ответ написан
Комментировать
@Moxa
я думаю, что тут специальная магия для обработчки json'a.. предположим, что value - некий JsonItem, который хранит в себе значение, это значение может быть null'ом, для этого и сделана вторая проверка
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы