Eventuali duplicati:
Method Overloading for NULL parameterUtilizzando nulla a metodi di overload in Java
Il seguente codice compila e va bene.
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);
}
}
In questo codice, il metodo da richiamare è quella che accetta il parametro di tipo String
Il docs dire.
Se più di un metodo membro è accessibile e applicabile ad una chiamata di metodo , è necessario scegliere uno di fornire il descrittore per il metodo di spedizione in fase di esecuzione. La lingua Java programmazione utilizza la regola che il metodo più specifico è scelto.
ma non capisco quando uno dei metodi nel codice che accetta il parametro della primitiva int
viene modificato per accettare il parametro del tipo involucro Integer
quali,
public void temp(Integer i)
{
System.out.println("The method with the receiving parameter of type Integer has been invoked.");
}
un viene generato un errore in fase di compilazione.
riferimento alla temp è ambigua, sia metodo temperatura (java.lang.String) in methodoverloadingpkg.Main e metodo temp (java.lang.Integer) in methodoverloadingpkg.Main partita
In questo particolare scenario, perché è legale sovraccaricare un metodo con un tipo di dati primitivo che tuttavia non sembra essere il caso con il suo tipo di wrapper corrispondente?
Lo ha già risposto oggi [Is Null una stringa o un oggetto] (http: // StackOverflow. it/questions/13033037/is-null-a-string-or-an-object/13033243 # 13033243) –