检查字符串和对象
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
可以分配给任何引用类型。在决定调用方法的哪个重载版本时,会选择具有最具体参数的方法。 String
比 Object
更具体(因为 String
是 Object
的子 class)。因此 SayHi(String str)
被称为 null
参数。
代码如下:
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
可以分配给任何引用类型。在决定调用方法的哪个重载版本时,会选择具有最具体参数的方法。 String
比 Object
更具体(因为 String
是 Object
的子 class)。因此 SayHi(String str)
被称为 null
参数。