Po prostu z ciekawości spróbowałem tego przykładu.JAVA Przeciążenie obiektu/łańcucha znaków
public class Class1 {
public void method(Object obj){
System.out.println("Object");
}
public void method(String str){
System.out.println("String");
}
public static void main(String... arg){
new Class1().method(null);
}
}
Wyjście to "Ciąg". Chciałbym wiedzieć, na jakiej podstawie JVM decyduje się na wywołanie metody biorąc String jako argument, a nie Object.
Czy to nie jest błąd kompilacji? Coś o niejednoznacznych parametrach? – Thilo
Najwyraźniej nie. Chciałbym, żeby tak było. – Thilo
Nic dwuznacznego na ten temat, @Thilo. Byłoby niejednoznaczne, gdyby pierwsza metoda zaakceptowała "Integer" i drugi "String", ponieważ wtedy żaden z nich nie byłby "bardziej konkretny" niż drugi. – Joni