Informatik Frage?


03.10.2022, 11:01

Verbesserrung: Bei meinem Code: 

.- macht aber irgendwie trotzdem keinen unterschied🤨

1 Antwort

Vom Fragesteller als hilfreich ausgezeichnet
Dazu wird "gecastet", was mir btw erstmal ein völlig neuer Begriff ist. Wie auch immer.

Falls du dich wirklich noch nicht mit Typecasting auseinandergesetzt haben solltest, würde ich dir raten, das erst einmal vorzuziehen. Kurz erklärt geht es darum, einen Wert zu einen anderen Typ zu konvertieren. Man kann hierbei zwischen impliziten und expliziten Casts unterscheiden.

Ein Beispiel für einen impliziten Typecast:

double number = 2;

Auf der rechten Seite steht ein Integer-Literal, welches automatisch in den double konvertiert wird. Das klappt problemlos, da der Wertebereich von double den Wertebereich des Integers abdeckt.

Zwei Beispiele für einen expliziten Typecast:

String numericRepresentation = Integer.toString(5);

Object car = new Car();
Car realCar = (Car) car;

Diese Konversionen könnte der Computer nicht selbstständig übernehmen, da hierbei auch das Risiko eines Datenverlusts besteht. Die Operationen müssen explizit vorgegeben werden.

Weiteres kannst du unter anderem hier nachlesen.

In deinem Fall wird getContent sicherlich ebenso ein Object zurückgeben. Da dieser Typ keine Methode schreibeInfos kennt, muss erst einmal eine Typumwandlung vorgenommen werden.

Zu deinem Knotenproblem: Du musst beachten, dass deine Datenstruktur aus Knoten besteht, wobei jeder Knoten irgendeinen Inhalt hat.

Einmal visuell dargestellt:

Node(5) ---> Node(Car()) ---> Node('a') ---> ...

Um nun den Inhalt des zweiten Knotens zu erhalten, musst du erst zum zweiten Knoten navigieren:

secondNode = firstNode.getNext();

Und danach den Inhalt aus dem Knoten herausholen. Dieser kann im Anschluss zu seinem Originalobjekt konvertiert werden:

content = secondNode.getContent();
car = (Car) content;
car.writeInfo();

Man könnte diesen Prozess zwar auch in einer Zeile formulieren:

((Car) firstNode.getNext().getContent()).writeInfo();

doch wird so ein Ausdruck dadurch schnell schwerer lesbar, was wiederum zu Fehlern führt. Zum Beispiel bei der Klammersetzung.

Wenn du nun einmal auf deinen Code schaust (und auch auf die Fehlermeldung), solltest du merken, dass sich gerade so ein Fehler eingeschlichen hat. Du versuchst, den Knoten zu konvertieren, statt seinen Inhalt.