可能重复:
NULL 参数的方法重载
以下代码编译并运行良好。
public class Main
{
public void temp(Object o)
{
System.out.println("The method with the receiving parameter of type Object has been invoked.");
}
public void temp(String s)
{
System.out.println("The method with the receiving parameter of type String has been invoked.");
}
public void temp(int i)
{
System.out.println("The method with the receiving parameter of type int has been invoked.");
}
public static void main(String[] args)
{
Main main=new Main();
main.temp(null);
}
}
在这段代码中,要调用的方法是接受类型参数的方法String
文档说。
如果多个成员方法既可访问又适用于方法调用,则有必要选择一个为运行时方法分派提供描述符。Java 编程语言使用选择最具体方法的规则。
但我不明白何时int
修改代码中接受基元参数的方法之一以接受包装器类型的参数,Integer
例如,
public void temp(Integer i)
{
System.out.println("The method with the receiving parameter of type Integer has been invoked.");
}
发出编译时错误。
对 temp 的引用不明确,methodoverloadingpkg.Main 中的方法 temp(java.lang.String) 和 methodoverloadingpkg.Main 中的方法 temp(java.lang.Integer) 都匹配
在这种特殊情况下,为什么重载具有原始数据类型的方法是合法的,但其相应的包装器类型似乎并非如此?