У меня есть следующий фрагмент кода, который вызывает у меня беспокойство, где currentRate и secondCurrentRate являются объектами Double, правильно определенными:
(currentRate != null && secondCurrentRate != null) ? currentRate * secondCurrentRate : null;
Это должно проверять каждый объект Double на нулевое значение и присваивать значение null соответственно. Однако, если secondCurrentRate имеет значение null, это вызывает исключение NullPointerException. Я изменил фрагмент кода следующим образом:
(currentRate == null | secondCurrentRate == null) ? null : currentRate * secondCurrentRate;
И это работает, как и ожидалось. Мой вопрос: почему это происходит? Я мог бы понять это, если бы я вызывал какой-то метод для объектов, но я понимал, что исключения NullPointerException были вызваны при вызове метода для нулевого объекта. Существует нулевой объект, но нет вызова метода.
Кто-нибудь может предложить какое-либо понимание этого? Это работает в Java 5.