Я видел где-то обсуждение, что следующий код приводит к тому, что obj
является Double
, но он печатает 200.0
слева боковая сторона.
Object obj = true ? new Integer(200) : new Double(0.0);
System.out.println(obj);
Результат: 200.0
Однако, если вы поместите другой объект с правой стороны, например BigDecimal
, тип obj
- Integer
, как и должно быть.
Object obj = true ? new Integer(200) : new BigDecimal(0.0);
System.out.println(obj);
Результат: 200
Я предполагаю, что причина этого как-то связана с приведением левой части к двойному
таким же образом, как это происходит для целого числа
/ двойные
сравнения и вычисления, но здесь левая и правая части не взаимодействуют таким образом.
Почему это происходит?