I haben die folgenden 2 Verfahren in einer Klasse überlastet:Method Überlastung und Leiten null
public class Test{
public static void main(String []args) throws ParseException{
Test t = new Test();
t.testMethod(null);
}
public void testMethod(Object o){
System.out.println("Object");
}
public void testMethod(String s){
System.out.println("String");
}
}
Wenn ich die Methode aufrufen testMethod
es "String" drucken.
Wenn ich noch eine überladene Methode hinzufügen:
public void testMethod(StringBuilder sb){
System.out.println("String");
}
Es wirft mich Compiler-Fehler: The method testMethod is ambigous for type Test
..
All dies geschieht, wenn ich die Methode mit null
Meine Fragen berufen sind:
- Warum druckt String und nicht Objekt ?
- Warum ist beim Hinzufügen der dritten Methode ein Kompilierungsfehler aufgetreten?
Abgesehen von Ihrer spezifischen Frage, schlage ich vor, dass Sie vermeiden, eine Signatur mit einem Objektparm und andere mit einem bestimmten Datentyp zu haben. Es mag schön sein, es als Auffangbecken zu haben, aber normalerweise lauern sie Fallen. –