I cant figure out how the int 7 is consider as object in below example.
The sifer(7) is consider to be method sifer(Object o). I am not able to get it how this happened. In one of my java reference book it says Int can be boxed to an Integer and then “widened” to an object. I am not sure what that means.
>> Class A
class A { }
>> Class B
class B extends A { }
>> Class ComingThru
public class ComingThru {
static String s ="-";
static void sifer(A[] ...a2)
{
s = s + "1";
}
static void sifer(B[] b1)
{
s += "3";
}
static void sifer(Object o)
{
s += "4";
}
public static void main(String[] args) {
// TODO Auto-generated method stub
A[] aa= new A[2];
B[] ba = new B[2];
//sifer(aa);
//sifer(ba);
sifer(7);
System.out.println(s);
}
}
Since there is no
sifer(int)method, the compiler will try to find the “closest match”. In this case, the other 2sifermethods take arrays as parameters, which an int clearly isn’t.The last method,
sifer(Object)can be applied to any objects, including anIntegerso that’s the method that is used forsifer(7).The reality is a little more complex, and the JVM will look for a matching mathod in the following order: