Учитель diego

Особенности автобоксинга

  • 15
  • Недоступна
Исправь ошибку в методе getValueByIndex(). Читай доп. статью про особенности автобоксинга.
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (21)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий вы должны авторизоваться
Даниил36 уровень
15 июня, 20:56
Короче из советов ниже 2 рабочих варианта: 1) привести явно Double к Number и тогда будет приведение обеих сторон к Double, а будет к Integer (так как он более точный чем Number), но этот Number который был получен из Double будет хранить в себе информацию что он является объектом типа Double; 2) переписать через if/else и не будет всяких подводных приведений типов.
Dmytro Zhelezniak41 уровень, Харьков
29 апреля, 17:45
Брюс Эккель в своей книге упоминает об этой особенности тернарного оператора. Всегда приводится к большему типу, даже если этот больший тип никогда не будет возвращаться.
Пётр41 уровень, Москва
22 апреля, 06:55
Нужно делать через утилитарные классы Arrays.asList(array).contains(index)), чтобы работало норм в реальности) А такой нечитаемый код, как говорили в одной из предыдущих лекций, будет выкинут при рефакторинге :D Если решать "в лоб", то нужно обе части того, что возвращает тернарный оператор приводить к общему значению явно, иначе Integer неявно скастуется (автобоксингом) к Double при возвращении. То есть надо и инт и дубль сделать явно (Number) перед возвращением, чтобы они передались as is.
Василий41 уровень, Киев
18 марта, 15:00
Установил FindBugs, как советовали ниже, но он не показывает эту ошибку. Как её воспроизвести?
Vitaly Khan37 уровень
16 января, 04:57
ничего себе! вот это подстава с тернарным оператором! неожиданно. без статьи с объяснениями сам не дойдешь.... приблизительно так же опешил, когда узнал, что i++; и i = i+1; не всегда равнозначны. сколько же таких подводных камней еще будет...
Павел Х.41 уровень, Санкт-Петербург
16 августа 2018, 16:47
Если поставить
(Number) new Double(-1);
как советовали ниже, то мы получим нужный результат. Но при этом IDEA будет утверждать, что такое приведение избыточно и советовать его убрать. Косяк!
Bator32 уровень, Москва
31 мая 2018, 15:18
Еще один подводный камень.
vinsler35 уровень, Санкт-Петербург
6 мая 2018, 20:59
Суть в двух словах: ? : работает через зад, нужно делать через if-then-else
Дмитрий Шалухов36 уровень, Минск
31 августа 2017, 19:41
https://habrahabr.ru/post/201334/
Karahanid40 уровень, Алматы
9 октября 2017, 13:59
Ах, ты шалун!
Алексей Перелыгин40 уровень, Санкт-Петербург
20 декабря 2017, 14:53
спасиб за ссылку
Александр40 уровень, Санкт-Петербург
8 июня 2018, 18:33
А как работает?
Ro Do40 уровень, Киев
16 июля 2017, 18:23
Задача не на особенности автобоксинга, а на особенности тернарного оператора.
Vra40 уровень
6 ноября 2017, 19:54
задача на особенности автобоксинг тернарного оператора, как по мне так очень полезная инфа