Scusate per il titolo.
Perchè il seguente codice stampa "String" e non "Object":
codice:
public class Test {
public void mioMetodo(Object o) {
System.out.println("Object");
}
public void mioMetodo(String s) {
System.out.println("String");
}
public static void main(String[] args) {
Test t = new Test();
t.mioMetodo(null);
}
}
Visto che il seguente codice stampa "no" e non "si":
codice:
public class Test2 {
public static void main(String args[]) {
String s = null;
if (s instanceof String)
System.out.println("si");
else
System.out.println("no");
}
}
Inoltre se ragruppo in un solo test entrambi i risultati mi da "String - no"
codice:
public class Test3 {
public void mioMetodo(Object o) {
System.out.print("Object - ");
}
public void mioMetodo(String s) {
System.out.print("String - ");
if (s instanceof String)
System.out.println("si");
else
System.out.println("no");
}
public static void main(String[] args) {
Test t = new Test();
t.mioMetodo(null);
}
}
Grazie