views:

60

answers:

1

Let's say that I have the following:

int a = 2;
Number b = (Number) a;

System.out.println(b); // Prints 2

http://java.sun.com/docs/books/jls/first_edition/html/15.doc.html#238146 says that a primitive value may not be cast to a reference type. Does Java know to create an Integer from the primitive int and then cast to the superclass? How exactly does Java handle this behind the scenes? Thanks!

+3  A: 

The process is called autoboxing. In short, the compiler sees that a wrapper (Integer) rather than a primitive (int) is needed and automatically adds the conversion. And actually your cast to Number is not necessary.

Bozho