Ich habe vielleicht die Terminologie falsch, also entschuldige ich mich, ich bin ziemlich der Java-Anfänger.Java - erhalten erweiterte Klasse von Objekt mit Elternklasse
Ich verwende das LibGDX-Framework, um ein mobiles Spiel zu entwickeln und zu versuchen, seine Stage- und Actor-Klassen zu nutzen.
Ich habe meine eigene Klasse StageExtension erstellt, die eine Erweiterung der Stage-Klasse ist, da ich einige meiner eigenen Methoden hinzugefügt habe. Also sagen wir, ich habe;
StageExtension stageExt = new StageExtension():
Actor actor = new Actor();
stageExt.addActor(actor);
Das funktioniert einwandfrei. Das Problem ist, wenn ich die Bühne vom Actor abrufen möchte, um eine meiner eigenen StageExtension-Methoden aufzurufen. Der Actor-Verweis bezieht sich auf die Bühne, aber nur auf die "Bühne", z. die Actor-Klasse hat den Getter;
public Stage getStage() {
return stage;
}
Also, klar verstehe ich nicht sehr gut Java. Wenn ich den Actor zur Bühne hinzufüge, ruft er setStage() im Actor auf, sodass die StageExtension als gerade eine Bühne im Actor festgelegt wird. Wenn dies passiert, ignoriert Java einfach meine erweiterte Klasse?
Wie kann ich meine StageExtension-Instanz vom Actor aufrufen, ohne diese Hauptklassen zu kopieren und zu ändern?
Hoffe, das macht Sinn, danke.
tun eine Besetzung auf getStage, StageExtension stageExt = (StageExtension) actor.getStage(). – dumitru
Danke für die schnelle Antwort, die ich hinzufügen wollte Ich habe das schon probiert und bekam eine Nullzeiger-Ausnahme, die ich für die richtige Antwort hielt, sollte das dann tatsächlich funktionieren? Ich werde es noch einmal versuchen, vielleicht habe ich etwas falsch gemacht. – hamham
Um zu vermeiden, dass der Null-Zeiger zuerst auf eine 'Stufe' verweist, prüfen Sie, ob das Objekt richtig ist. 'Stage stage = actor.getStage();' gefolgt von 'if (Stage-Instanz von StageExtension) {StageExtension stageExt = (StageExtension) stage; ...} ' – flakes