Коллега проверена в этом коде:
Number n = ...;
double nr = n == null ? 0.0 : (double) n;
Другой коллега тогда пожаловался, что это не скомпилировалось, и что бы я ожидал. Однако оказалось, что я уже вытащил этот код из SVN, и все сработало нормально. У всех нас была версия Java, равная 1,7 в eclipse, и оказалось, что код компилируется под eclipse 4.4.2 (Luna), но не работает под 4.2.2.
Я исправил проблему, заменив листинг на n.doubleValue()
.
Теперь актуальный вопрос: почему это принято в первую очередь? Разумеется, он должен работать при кастомизации Double
вместо Double
, но я думаю, что прямая трансляция из Number
в Double
была запрещена. Итак, является ли это ошибкой в eclipse 4.2.2, которая была исправлена в то же время, или же eclipse 4.4.2 молча принимает код, который не должен компилироваться (что будет ИМХО быть ошибкой)?