检查字符串和对象

Kri*_*hna 2 java oop string core 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");
    }
}
Run Code Online (Sandbox Code Playgroud)

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

Era*_*ran 7

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