Klassen Typecast unnötig?

rebzdu

Neues Mitglied
Ich steige zur Zeit von Delphi auf JAVA um und habe ein Problem mit folgenden kleinen JAVA-Programm zum Testen der Klasse Stack(Keller):
Java:
public class KellerBsp 
	{
	public static void main(String[] args)
		{
		Stack s = new Stack();
		s.push("Erstes Element");
		s.push("Zweites Element");
		while (!s.isEmpty())
			{
			System.out.println(s.top());
			s.pop();
			}
		}
	}

die Methoden push bzw. top der Klasse Keller sind deklariert durch

Java:
    public void push(Object pObject) {...}

    public Object top() {...}

Wieso ist in der print-Anweisung kein Typecast nötig, da top nur ein Objekt der Klasse Object zurückgibt, print jedoch einen String erwartet?

Besten Dank im Voraus.
 
G

Gast2

Gast
Wieso ist in der print-Anweisung kein Typecast nötig, da top nur ein Objekt der Klasse Object zurückgibt, print jedoch einen String erwartet?
Wie kommst du darauf, dass System.out.println einen String erwartet? Die API sagt was anderes:
PrintStream (Java Platform SE 6)
Du kannst auch ein Object übergeben.

Außerdem ist die Klasse Stack seit Java5 generisch, du könntest also gleich auch einen Stack für Strings erstellen:
Java:
Stack<String> stringStack = new Stack<String>();
Die pop() Methode liefert dir dann immer einen String zurück.
 

anti-held

Bekanntes Mitglied
bei System.out.println(object);
wird immer die toString()-Methode des Objects aufgerufen und in den Stream geschrieben!
Diese wird bereits von Object implementiert, kann jedoch von allen Objekten überschrieben werden.
 

Ähnliche Java Themen

Neue Themen


Oben