Ci sono 3 metodi println
in PrintStream
che accettano un tipo di riferimento - println(char x[])
, println(String x)
, println(Object x)
.
Quando si passa null
, tutti e 3 sono applicabili. Le regole di overloading del metodo preferiscono il metodo con i tipi di argomenti più specifici, quindi println(Object x)
non è selezionato.
Poi il compilatore non può scegliere fra i primi due - println(char x[])
& println(String x)
- poiché String
non è più specifico rispetto char[]
e viceversa.
Se si desidera selezionare un metodo specifico, eseguire il cast del valore nullo nel tipo richiesto.
Ad esempio:
System.out.println((String)null);
'System.out.println ((Object) null);' –
Possibile duplicato di [impossibile passare null ad execute(); metodo di AsyncTask in Android 4.0] (http://stackoverflow.com/questions/10679739/unable-to-pass-null-to-execute-method-of-asynctask-in-android-4-0) – Raedwald
Vedere anche http : //stackoverflow.com/questions/13033037/how-is-an-overloaded-method-chosen-when-a-parameter-is-the-literal-null-value – Raedwald