[英]Java - passing null as an argument to print()
我想知道为什么下面的代码不起作用:
System.out.print(null);
response.getWriter().print(null);
但是下面的工作:
String s = null;
System.out.print(s);
response.getWriter().print(s);
传递null
与传递引用为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)
: methodCall(null)
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.