Использование null в перегруженных методах в Java [duplicate]
Возможный дубликат:
Перегрузка метода для параметра 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 неоднозначна, оба метода temp (java.lang.String) в метадоверсии загрузки pkg.Main и метод temp (java.lang.Integer) в метадоверсии загрузки pkg.Main совпадают
В этом конкретном сценарии, почему допустимо перегрузить метод с примитивным типом данных, который, однако, не 'Похоже, дело в соответствующем типе оболочки?