What do you think that the following code snippet will print? Object o = true ? new Integer(1) : new Double(2.0); System.out.println(o); Yes! It will print: 1.0 What? 1.0? But I have assigned an Integer to my o variable. Why does it print 1.0? It turns out that there is a subtle little specification section … Continue reading Java Auto-Unboxing Gotcha. Beware!