Я видел, как где-то обсуждалось, что следующий код приводит к тому, что 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
Я предполагаю, что причина этого как-то связана с приведением левой части к double
таким же образом, как это происходит для integer
/double
сравнений и вычислений, но здесь левая и правая стороны не взаимодействуют таким образом.
Почему это происходит?
obj.getClass()
показываетDouble
. Какого черта, чувак. - person G_H   schedule 04.11.2011