如果我用Java写这行:
JOptionPane.showInputDialog(null, "Write something");
Run Code Online (Sandbox Code Playgroud)
将调用哪种方法?
showInputDialog(Component parent, Object message)showInputDialog(Object message, Object initialSelectionValue)我可以测试一下.但在其他类似的情况下,我想知道会发生什么.
public class OverloadingTest extends Format{
public int add(String s1){
System.out.println("With String");
return 1;
}
public int add(Object a){
System.out.println("With Object");
return 1;
}
public static void main(String[] args) {
OverloadingTest overloadingTest = new OverloadingTest();
overloadingTest.add(null);
}
}
Run Code Online (Sandbox Code Playgroud)
为什么是程序的输出 With String ?
我试过阅读第6版的JLS,但我仍然找不到答案.
我猜的唯一原因是选择了继承层次结构中最接近的匹配.
所以在这种情况下,它需要String作为Object是它的超类.
我想知道为什么下面的代码不起作用:
System.out.print(null);
response.getWriter().print(null);
Run Code Online (Sandbox Code Playgroud)
但是下面的工作:
String s = null;
System.out.print(s);
response.getWriter().print(s);
Run Code Online (Sandbox Code Playgroud)
传递a null与传递引用之间的区别是null什么?
编辑: 前面提到的工作不表示编译错误.