Я нашел вопрос в этой строке кода. Не обращайте внимания на то, что этот код не имеет смысла:Проверка всех условий в логической дизъюнкции
if (object != null || object.someMethod()) object.doSomething();
Сначала я думал, что этот код будет бросать NullPointerException
если объект является недействительным. Но это логическая дизъюнкция, и если одно из условий верно, то все условие истинно. Поэтому компилятор не проверяет второе условие и не выбрасывает NullPointerException
.
Является ли это стандартным поведением или реализацией Java-стандарта? Если второй случай верен, этот код не защищен.
данный код ** будет ** бросать 'NullPointerException', если объект является' null': он должен быть '&&', чтобы предотвратить это –