我想知道为什么下面的代码不起作用:
System.out.print(null);
response.getWriter().print(null);
但下面的工作:
String s = null;
System.out.print(s);
response.getWriter().print(s);
null
传递 a与传递引用 as 相比有什么区别null
?
已编辑: 前面提到的不起作用表示编译错误。
我想知道为什么下面的代码不起作用:
System.out.print(null);
response.getWriter().print(null);
但下面的工作:
String s = null;
System.out.print(s);
response.getWriter().print(s);
null
传递 a与传递引用 as 相比有什么区别null
?
已编辑: 前面提到的不起作用表示编译错误。
这是因为System.out.println()
期望某种类型的东西。null
没有类型,因此不能单独输出。这通过以下方式显示:
不起作用:
System.out.println(null);
作品:
System.out.println((String)null);
System.out.println((char[])null);
System.out.println((Object)null);
这是编译器类型检查方法调用的参数。
谢谢大家的答案 。根据您的意见,我自己编写了答案。似乎这个调用System.out.print(null)
对编译器来说是模棱两可的,因为print(null)
这里会找到两个最佳的特定匹配,即print(String)
和print(char[])
。所以编译器无法确定在这里调用哪个方法。
小例子是:
private void methodCall(String str) {
}
private void methodCall(char[] ch){
}
现在这段代码变得模棱两可:methodCall(null)
。