检查字符串和对象

Checking With String and Object

代码如下:

public class OverloadingByObject {
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Object object = null;
        new OverloadingByObject().SayHi(null);
        new OverloadingByObject().SayHi(object);
    }

    public void SayHi(String str) {

        System.out.println("String called");
    }

    public void SayHi(Object obj) {

        System.out.println("Object called");
    }
}

当我传递 null 时,它应该调用 Object 的方法。它调用 String 方法的原因是什么?

null 可以分配给任何引用类型。在决定调用方法的哪个重载版本时,会选择具有最具体参数的方法。 StringObject 更具体(因为 StringObject 的子 class)。因此 SayHi(String str) 被称为 null 参数。