Vererbung Mit Casten direkt auf Sub-Klasse Zugreiffen

Aaronmacaron

Mitglied
Hallo

Ich habe ein Problem oder eine Frage, welche aus einem Android Projekt stammt, jedoch nichts mit Android, sondern mit Java an sich zu tun hat. Meine Frage ist, warum ich per Casten nicht direkt auf die Sub-Klasse zugreifen kann. Hier das Beispiel:
Code:
(Painter) findViewById(R.id.painter).getPath;

Painter ist die Subclass von View, mit findViewById() kann man eine View bekommen. Da ich weiß, dass meine View ein Painter Objekt ist habe ich das so gecastet. .getPath gibt es nur bei Painter, was auch der Grund dafür ist warum ich überhaupt Casten muss. Leider funktioniert dieser Code nicht; es wird ein Fehler angezeigt. Wenn ich das aber so Schreibe dann geht es.
Code:
Painter painter = (Painter) findViewById(R.id.painter);
painter.getPath();

Ich frage mich aber warum das so ist. Im Grunde ist das doch das gleiche, oder habe ich einfach einen dummen Fehler gemacht?

Vielen Dank
 

Schesam

Bekanntes Mitglied
Casten bezieht sich immer auf die Referenzvariable, zu der ein Ausdruck zugewiesen wird. In deinem ersten Fall würdest du das was getPath() zurückgibt in Painter casten. Damit du aber von painter getPath() aufrufen kannst, musst du das zweite machen. Casten hat bei verschachtelten MEthodenaufrufen also keine Auswirkung, immer nur bei Zuweisungen für Referenzvariablen oder methodenaufrufen

Was du tun kannst ist sowas:
Code:
    public static void main(String[] args) {
        A a = (A) new B();
        ((B) a).doSomething();
    }

    private static class A {

    }

    private static class B extends A {

        public void doSomething() {
            System.out.println("Done");
        }
    }
Ist aber eher unüblich
 
Zuletzt bearbeitet:

Aaronmacaron

Mitglied
Casten bezieht sich immer auf die Referenzvariable, zu der ein Ausdruck zugewiesen wird. In deinem ersten Fall würdest du das was getPath() zurückgibt in Painter casten. Damit du aber von painter getPath() aufrufen kannst, musst du das zweite machen. Casten hat bei verschachtelten MEthodenaufrufen also keine Auswirkung, immer nur bei Zuweisungen für Referenzvariablen oder methodenaufrufen

Heißt das also, dass ich das so machen müsste?
Code:
((Painter) findViewById(R.id.painter)).getPath();
 

Schesam

Bekanntes Mitglied
IN meinem Edit habe ich das ja so reingeschrieben^^ Haste evtl nicht gesehen, aber ja. Es ist nur sehr unüblich, bzw iCh hab sowas sehr selten bisher gesehen
 

Saheeda

Top Contributor
@Aaronmacaron

Persönlich finde ich casten immer bisschen unschön. Sicher, dass es nicht auch anders geht? Beziehungsweise: Fragst du vorm Cast wenigstens ab, ob das Objekt vom Typ View ist, bevor du es castest?
Sonst kannst du darauf warten, dass ClassCastExceptions fliegen.
 

CSHW89

Bekanntes Mitglied
Im Allgemeinen sollte man den Typ anfragen. In diesem speziellen Beispiel mit findViewById() bei Android kann man sich das aber sparen, da mans ja selbst in der xml-Datei definiert, von welchem Typ das bestimmte View ist.

lg Kevin
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
tom.j85 TicTacToe - probleme beim Casten Java Basics - Anfänger-Themen 6
B Datentypen Welcher Typ wird beim Casten übernommen? Java Basics - Anfänger-Themen 12
G Probleme beim casten von double zu int Java Basics - Anfänger-Themen 3
BuTTerBroTHDx Char Wert in int casten ? Java Basics - Anfänger-Themen 4
N Variablen zurück casten Java Basics - Anfänger-Themen 3
F Casten bei Implements Java Basics - Anfänger-Themen 2
S Klassen casten, IS-A Beziehung Java Basics - Anfänger-Themen 5
J Generics casten Java Basics - Anfänger-Themen 14
U Klassen Dynamisches Casten? Java Basics - Anfänger-Themen 39
T Probleme beim casten Java Basics - Anfänger-Themen 9
M Casten Java Basics - Anfänger-Themen 2
K Collections Vector zu String casten Java Basics - Anfänger-Themen 4
S Polymorphes Objekt in eigentliche Klasse casten Java Basics - Anfänger-Themen 6
masii Methoden Parameter casten? Java Basics - Anfänger-Themen 2
D Datentypen Abstrakter Datentyp lässt sich nicht casten Java Basics - Anfänger-Themen 7
U ArrayList casten Java Basics - Anfänger-Themen 37
F g.drawLine in g 2D casten Java Basics - Anfänger-Themen 5
A Klassen ArrayList richtig / sicher Casten? Java Basics - Anfänger-Themen 3
J Frage zu generischer Klasse und Casten Java Basics - Anfänger-Themen 14
M Frage zum Casten von Objekten Java Basics - Anfänger-Themen 5
M sicheres/unsicheres Casten bei Objekten Java Basics - Anfänger-Themen 13
D Object auf JTextpane / jTextArea casten? Java Basics - Anfänger-Themen 3
B Casten oder vielleicht was anderes? Java Basics - Anfänger-Themen 9
T Boolean in ein Objektdatentyp casten möglich? Java Basics - Anfänger-Themen 5
J Casten (Typumwandlung) Java Basics - Anfänger-Themen 12
P Casten Hash Map Java Basics - Anfänger-Themen 4
W Auf 'this' casten Java Basics - Anfänger-Themen 3
M Dynamisches Casten mal wieder Java Basics - Anfänger-Themen 4
M casten Java Basics - Anfänger-Themen 11
D Casten eines Objekts: Funktion der Oberklasse aufrufen Java Basics - Anfänger-Themen 4
G Datentypen char to int casten - falsches Ergebnis! Java Basics - Anfänger-Themen 6
S casten array in int von float Java Basics - Anfänger-Themen 5
A Dynamisches casten Java Basics - Anfänger-Themen 19
C Probleme beim casten und Objekt zugriff Java Basics - Anfänger-Themen 12
P Klasse nach Element casten Java Basics - Anfänger-Themen 4
G Double casten Java Basics - Anfänger-Themen 8
O Object nach Double casten Java Basics - Anfänger-Themen 11
L Object[] in String[] casten Java Basics - Anfänger-Themen 7
V Gelesene FTP Datei richtig casten Java Basics - Anfänger-Themen 9
T Properties casten Java Basics - Anfänger-Themen 4
G Arrays casten? Java Basics - Anfänger-Themen 12
G string "null" in null casten Java Basics - Anfänger-Themen 3
M casten und Generics Java Basics - Anfänger-Themen 9
S Objekt Casten Java Basics - Anfänger-Themen 4
G String nach int casten Java Basics - Anfänger-Themen 5
G Vektor auslesen und als int Variable casten Java Basics - Anfänger-Themen 4
G String in Date casten. Java Basics - Anfänger-Themen 7
G String in Date casten Java Basics - Anfänger-Themen 4
G String in Long casten Java Basics - Anfänger-Themen 2
G Object[] [] nach vector casten. Java Basics - Anfänger-Themen 3
G printStackTrace(); in String casten Java Basics - Anfänger-Themen 3
G String in int casten Java Basics - Anfänger-Themen 2
G Integer[] nach int[] casten - wie? Java Basics - Anfänger-Themen 2
D Arrays casten Java Basics - Anfänger-Themen 12
G Casten ? Java Basics - Anfänger-Themen 3
HaukeG Casten to String und Vergleichen Java Basics - Anfänger-Themen 2
G ich komm nicht weiter -> String in int casten Java Basics - Anfänger-Themen 4
T Casten von Choice auf Vector oder Object[] Java Basics - Anfänger-Themen 14
B Vector nach float[] casten Java Basics - Anfänger-Themen 6
G String zu byte[] "casten"? Java Basics - Anfänger-Themen 3
M Hin und Her Casten Object->int und int->Object Java Basics - Anfänger-Themen 3
T Typsicheres casten eines Objects Java Basics - Anfänger-Themen 5
D Object[] in Liste casten? Java Basics - Anfänger-Themen 8
T Chaosprogrammierer hat einen fehler beim casten? Java Basics - Anfänger-Themen 5
J Attribut casten Java Basics - Anfänger-Themen 3
A Array mit generischen Typen casten? Java Basics - Anfänger-Themen 6
C Automatisches Casten => inkompatibel Java Basics - Anfänger-Themen 7
G Byte-Code einlesen und zu Hex casten Java Basics - Anfänger-Themen 2
T Object[] zu String[] casten? Java Basics - Anfänger-Themen 3
R Double nach Integer casten Java Basics - Anfänger-Themen 8
L Adresse in String[] casten Java Basics - Anfänger-Themen 6
M Object auf Interface casten? Geht das? Java Basics - Anfänger-Themen 21
U ArrayLists und Casten Java Basics - Anfänger-Themen 2
O TreeMap nach Object[] casten? Java Basics - Anfänger-Themen 3
M Casten bei Objekten? Java Basics - Anfänger-Themen 4
S casten von Interface zu Klasse unterbinden Java Basics - Anfänger-Themen 15
M long nach String casten Java Basics - Anfänger-Themen 2
U String nach Integer Casten. Java Basics - Anfänger-Themen 4
G Sting nach int casten Java Basics - Anfänger-Themen 13
A Object casten? Java Basics - Anfänger-Themen 3
R Casten Java Basics - Anfänger-Themen 3
F Casten: Object nach Array Java Basics - Anfänger-Themen 10
M Casten Java Basics - Anfänger-Themen 2
H komme mit casten nicht klar Java Basics - Anfänger-Themen 3
Avalon Request direkt aus Eclipse wie bei Postman Java Basics - Anfänger-Themen 3
N Eingabe des Users direkt hinter die Ausgabe Java Basics - Anfänger-Themen 3
J GUI wird direkt nach dem erstellen weiß übermalt Java Basics - Anfänger-Themen 3
J Direkt studieren? Oder autodidaktisch lernen? Java Basics - Anfänger-Themen 20
P Zufälliges Wort direkt aus einer Liste ausgeben Java Basics - Anfänger-Themen 9
Z ArrayList direkt feste Größe mitgeben Java Basics - Anfänger-Themen 13
X Dateien direkt hintereinander schreiben, Dateiname Java Basics - Anfänger-Themen 25
Q Tastatureingabe direkt nach Eingabe (ohne zwischenzeitliches "Return" o.Ä ) weiterverwenden Java Basics - Anfänger-Themen 1
J JDialog: wie kann ich ihn direkt als invisible erstellen Java Basics - Anfänger-Themen 7
S java tastendrücke direkt abfangen und printen Java Basics - Anfänger-Themen 3
J Objekte zur Laufzeit erzeugen und direkt verwenden Java Basics - Anfänger-Themen 9
S Direkt Instanzen anlegen Java Basics - Anfänger-Themen 1
G JTable: Werte in Tabelle direkt ansprechen Java Basics - Anfänger-Themen 3
D Direkt Klassen Initalisierung Java Basics - Anfänger-Themen 3
F Variablen Variable durch die direkt auf verschiede Objekte zugegriffen werden kann Java Basics - Anfänger-Themen 5
H Text ausdrucken, den ich entweder direkt in die Kommandozeile schreibe, oder über input redirect übe Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben