Weirdness of Method Overloading

如下代码(附件中同):

public class What026 {
    public static void main(String[] args) {
        What026 w = new What026();
        w.hello((Object) null);
        w.hello(null);
    }
    void hello(Object o) {
        System.out.println("object");
    }
    void hello(String s) {
        System.out.println("string");
    }
}

执行出来的结果如下:

object
string

有点搞不清楚为什么,姑且了解这么一个行为吧。当有两个方法都适合调用时,系统会调用参数类型较小的一个方法。

为什么呢?我现在也不知道。

问题来源:这里