Overloading method calls with parameter null

Viewed 3260

Possible Duplicate:
Method Overloading for NULL parameter

In the code below the output is

String

and if I remove the method with the parameter of type String then the output is

Object

I know how overloading of methods acts when the parameter types don't match exactly but I can not understand how null can be treated as an Object and/or a String parameter.

What is the explanation for this?

class C {

    static void m1(Object x) {
        System.out.print("Object");
    }
    static void m1(String x) {
        System.out.print("String");
    }

    public static void main(String[] args) {
        m1(null);
    }
}
5 Answers
Related