I was expecting, line 7 will print "Method 2" but the actual output is "Method 1". I think its because of "byte s" is wrapping to Byte object and since there is no such method with this type it is calling the method with Number type parameter. I want to know if there is any other explanation. [ July 06, 2007: Message edited by: Abdullah Al Mamun ]
Your assumption is right.....If you want a more detailed answer read the next few lines.
byte is autoboxed to Byte. In the code there is no method with a Byte,Byte argument. A "Byte" cannot be autoboxed to an "Integer" since they(these Wrapper Classes) are different from each other. Remember that the following classes extend "Number" class: AtomicInteger, AtomicLong, BigDecimal, BigInteger, Byte, Double, Float, Integer, Long, Short. Therefore, a "Byte" is a "Number" and hence the output "Method1". [ July 06, 2007: Message edited by: Veeraraagavan Rajachandrasekhar ]