如果我用Java写这行:
JOptionPane.showInputDialog(null, "Write something");
Run Code Online (Sandbox Code Playgroud)
将调用哪种方法?
showInputDialog(Component parent, Object message)showInputDialog(Object message, Object initialSelectionValue)我可以测试一下.但在其他类似的情况下,我想知道会发生什么.
null是一个引用,它只是null类型,即null不是对象类型.但是,当我运行下面的代码片段我很惊讶,当我传递null方法method(null);调用method(String s)没有method(Object o).
如果null本身由Java定义的,而不是对象类型的类型,那么为什么它叫method(String s)不method(Object o)?
public class Test {
public static void main(String[] args) {
method(null);
}
public static void method(Object o) {
System.out.println("Object impl");
}
public static void method(String s) {
System.out.println("String impl");
}
}
Run Code Online (Sandbox Code Playgroud)
编辑
我添加了一个方法:
public static void method(Integer s) {
System.out.println("String impl11");
}
Run Code Online (Sandbox Code Playgroud)
现在编译器给出了错误The method method(Object) is ambiguous for the type Test.
Integer a = null; …Run Code Online (Sandbox Code Playgroud) null如何在此代码中工作,为什么不打印对象?
class Test1{
public void doStuff(Object o){
System.out.println("In Object");
}
public void doStuff(String o){
System.out.println("In String");
}
}
public class TTest {
public static void main(String args[]){
Test1 t = new Test1();
t.doStuff(null);
}
}
Run Code Online (Sandbox Code Playgroud)
输出:
在字符串中