Cast-Problem

  • Themenstarter Themenstarter Julyanne
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
J

Julyanne

Gast
Hallöchen!
Ich hab ein kleines Problem in einem Programm ...

Code:
Bild grid;
grid = new Weitspringer();
grid = (Weitspringer) grid;

Weitspringer erbt von der abstrakten Klasse Bild.
Ich will im späteren auf eine Variable aus Weitspringer, feld, zugreifen - dabei passiert allerdings ein Laufzeitfehler.
Der Fehler muss beim Casten liegen - die Variable feld ist in Bild ebenfalls deklariert, sodass eine NullPointerException der Fehler ist. Nehme ich die Variable aus Bild raus, findet er sie überhaupt nicht ...

Was ist also falsch an diesem Casten??

Danke für eure Hilfe =)

(PS: habe ähnliche Varianten mit einer zweiten Variable etc ausprobiert, geht alles nicht)
 
wieso nicht gleich

Weitspringer ws = new Weitspringer(); ?

so wäre es richtig:
Bild grid;
grid = new Weitspringer();
Weitspringer ws = (Weitspringer) grid;

Die Variable grid ist nun mal vom Typ Bild und fertig.
 
Genau das meinte ich mit eine der Möglichkeiten, die ich ausprobiert habe ^^

und Bild soll es allgemein sein vorher, weil ich später eine andere Unterklasse von Bild verwendet möchte. Wobei deine Lösungsvariante dann auch etwas unpraktisch, allerdings möglich ist.
Aber trotzdem krieg ich da immer noch n Laufzeitfehler - falls es irgendwie hilft, in folgender zeile:

Code:
for(int i=0; i<grid.feld.length;i++){...}
 
Achso, der Quelltext eben bezogen auf meine Variante vom Anfang, in deinem Fall ws.feld.length ... ^^
 
du kannst sie nicht der gleichen varible zuseisen..
Code:
grid = (Weitspringer) grid;
geht nicht

so wie der müde joe schon gezeigt hat oder du verwendest sie einfach ganz normal

Code:
((Weitspringer) grid).methode();
 
warum funktioniert das nicht? bzw warum meckert er beim compilieren nicht, wenn das nicht geht?
ist doch einfach nur, dass ich der variable grid einen neuen wert zuweise ... wo ist da das problem?
und die variante vom müden Joe geht halt nicht ... warum auch immer.
und die von dir - da liegt das problem, dass ich die variable feld geschätzt 50 mal in diesem programm brauche ^^
 
>die Variable feld ist in Bild ebenfalls deklariert, sodass eine NullPointerException der Fehler ist

das hab ich noch überlesen.

Aber das Feld, was auch immer es sein mag ist null.
Und du möchtest dann length darauf anwenden.
--> Operation auf null --> peng --> NPE

grid.feld.length -->
statische MemberVaruiablen sind übrigens selten optimal.
Ich nehme mal an in deinem Fall schlecht auch ohne den
Code zu kennen
 
xD, oh mein Gott danke!
für den hinweis auf die statischen variablen ..
ich hab echt vergessen, die als solche zu deklarieren xD

was daran ist denn nicht optimal?

danke =)
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben