Würde es überhaupt funktionieren, wenn die zwei Methoden
hätte:
public void Ausgabe(Object o) und
public void Ausgabe(String s)?
String is ja auch ein Object…
Richtig, so einfach ist das nicht. IM Wesentlichen entscheidet nämlich schon der Compiler, welche Methode aufgerufen wird. Wenn der nicht mit Sicherheit sagen kann, dass das Objekt ein String ist, dann sagt er sich eben: Was soll’s, die andere Methode kann es in jedem Fall handhaben, die frisst ja Objekte.
Verschiedene Methoden funktionieren also nur, wenn die Parameter auch wirklich verschieden sind. Alles andere sollte mensch auch tunlichst vermeiden, da sonst sehr schnell schwer zu findende Programmfehler auftreten können, nur weil mensch mal irgendwo vergessen hat, einen Funktionsaufrufsparameter zu casten…
Das Problem in deiner Methode ist jedenfalls, dass du dem Compiler jegliche Informationen über die verwendeten Typen nimmst. „Object“ ist nunmal das meiste in Java, da kann dir der Compiler nicht helfen, Fehler zu vermeiden. Deshalb ja auch die bevorzugte Verwendung der Methodenüberladung, das kann der Compiler prüfen…
Wenn die Methode wirklich so klein bleibt, wie sie ist, dann sollte das kein Problem sein, aber wenn du die mal später wiederverwenden möchtest, dann musst du i.A. selbst höllisch aufpassen, was du da reinsteckst.
Na ja, sei’s drum, hast ja wahrscheinlich wirklich schon genug gefriemelt…
Stefan 