Vererbung Wie auf Subklasse zugreifen + übergeben?

DerBaumstamm

Mitglied
Hallo,

ich bin zwar noch relativ neu in Java, habe aber schon Programmierkenntnisse in anderen Sprachen, habe ich mich deshalb entschlossen es nicht in der Anfängersektion zu schreiben.

Ich habe hier eine Klasse "Items" und eine Unterklasse von Items namens "Sammelbares".
Desweiteren habe ich die Klasse "Inventar"

Das Inventar enthält eine Arrayliste vom Typ Items. Diese Liste möchte ich nun durchgehen (davon allerdings nur alle Collectables) und dann das gefundene Sammelbares übergeben.

Vom Prinzip her gar nicht so schwer. pName ist ein Parameter vom Typ Zeichenkette also String.

Java:
for(Items tempItem : itemList)
{
 if(tempItem.getName().equals(pName))
  {
    return tempItem
  }
}

Das Problem ist, ich spreche hiermit ja nur Objekte vom Typ Items an. Ich müsste also in der Schleife noch eine Schleife machen, was erst überprüft ob das Item (Superklasse) vom Typ Sammelbares (Unterklasse) ist und dann nicht das Object Items sondern das Object Sammelbares zurückgeben.

Ich habe gelesen, dass man nicht "downcasten" darf. Jetzt stellt sich mir die Frage wie man das, außer alles umschreiben (statt Itemsarray nen Sammelbaresarray etc.) lösen könnte.
 
Zuletzt bearbeitet:

Gucky

Top Contributor
Warum brauchst du eine Überprüfung? Du hast eine Liste, in der viele Objekte sind, die alle von Items (Klassennamen immer Einzahl) erben. Jetzt willst du wissen, was davon ein Sammelbares ist.
Dazu musst du einfach die Schleife so abändern, dass sie über alle Sammelbare Objekte läuft und diese in tempItem speichert.

Das mit den downcasten bezieht sich wahrscheinlich eher auf primitive Typen, wo dabei schon mal Müll rauskommen kann.
 

DerBaumstamm

Mitglied
@Gucky: Das ist ja das was ich will. Nur weiß ich nciht wie ich die Schleife so abändern kann, ich könnte es mit "instanceof" versuchen aber funktioniert das überhaupt? Kann ich mit Instanceof von der Superklasse auf die Unterklasse zugreifen? Ich dachte das geht immer nur andersherum.

Und wie speichere ich das Objekt Items in Sammelbares? Dafür müsste ich ja downcasten.
Schließlich schiebe ich einfach eine Superklasse in einer Unterklasse und sage dem Compiler "passt schon".

//edit: Würde dann so ausschauen, aber das sieht mir irgendwie nach einer "unsauberen" Lösung aus.
Java:
public Sammelbares getSammelbarByName(final String pName)
    {
        for(Item tempItem : itemList)
        {
            if(tempItem instanceof Sammelbares && tempItem.getName().equals(pName))
            {
                Sammelbares tempcollectable  = (Sammelbares) tempItem;
                return tempcollectable;
            }
        }
        return null;
    }
 
Zuletzt bearbeitet:

Gucky

Top Contributor
Eine Möglichkeit wäre es noch die Liste zu sortieren und abzuspeichern, wo die anderen Typen anfangen.

Downcasten musst du nicht. Die Schleife sähe so aus:
Java:
for (Sammelbar tmpSam:itemList){
   tuWas();
}

Die Schleife heißt for-EACH also für jedes Objekt, dass in die, vor dem Doppelpunkt deklarierte, Variable passt führe den Schleifenrumpf durch.
 

DerBaumstamm

Mitglied
Da kommt die Fehlermeldung "incompatible types" da die Arrayliste itemList ja Objekte vom Typ Items beinhaltet.

//edit: Die Arrayliste ist ja fest für Objekte vom Typ Items deklariert also : ArrayList<Items>. Dürfte also daran liegen, dass dein Code nicht funktioniert. Habe meinen Code bisher nicht getestet, wenn jemand noch eine andere Idee hat wie man das ganze sauberer gestalten könnte gerne Bescheid sagen.
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
S In Subklasse auf private Variablen zugreifen Allgemeine Java-Themen 4
J Reflection mit Klasse und Subklasse Allgemeine Java-Themen 11
J Verbindungsdaten an Subklasse übergeben? Allgemeine Java-Themen 5
F Dynamisch ein Objekt einer bestimmten Subklasse erstellen Allgemeine Java-Themen 7
A Annotation einer Subklasse im static-Block auslesen. Allgemeine Java-Themen 6
A Aus Superklasse Methode aus aufrufender Subklasse starten Allgemeine Java-Themen 7
M NullPointerException bei Subklasse ohne MediaTracker Allgemeine Java-Themen 12
berserkerdq2 Ein Gamepanel sei in 60x60 Pixel Quadrate aufgeteilt und isgesamt 600 Pixel breit & 300 Pixel hoch. Wie auf Quadrate zugreifen? Allgemeine Java-Themen 5
d.lumpi Aus Einer Klasse auf ein Objekt einer anderen Klasse Zugreifen Allgemeine Java-Themen 1
B Datei/Ordner auf Server zugreifen/erstellen Allgemeine Java-Themen 2
L Kapselung Auf DLL zugreifen Allgemeine Java-Themen 4
sascha-sphw Auf GoPro Speicher zugreifen Allgemeine Java-Themen 10
ReinerCoder auf Klassen innerhalb eines package zugreifen Allgemeine Java-Themen 22
K Auf Dateiverzeichnis extern zugreifen (evtl über XML??) Allgemeine Java-Themen 22
K Best Practice Auf die Klasse zugreifen im erzeugten ActionListener Allgemeine Java-Themen 2
Sin137 OOP Auf JPanel zugreifen, das einem JTabbePane hinzugefügt worden ist Allgemeine Java-Themen 10
P Threads Java Zugreifen Allgemeine Java-Themen 6
B Auf Web-API zugreifen Allgemeine Java-Themen 2
N Per Reflection auf (method) local inner class zugreifen? Allgemeine Java-Themen 3
A Datentypen Generics: Wie am besten auf Typparameter zugreifen Allgemeine Java-Themen 2
C Mit java auf Firefox zugreifen Allgemeine Java-Themen 7
T Mit Java auf die Konsole eines Process-Objekts zugreifen Allgemeine Java-Themen 10
U JNI -> Inhalt dll zugreifen Allgemeine Java-Themen 5
P Variablen Auf durch for-Schleife generierte JComboBox zugreifen Allgemeine Java-Themen 3
H JavaFX Von einer Methode auf stage-Objekt zugreifen Allgemeine Java-Themen 3
E Auf Java-Objekt aus anderer Instanz zugreifen Allgemeine Java-Themen 26
G Linux/C++/Pthreads auf JVM zugreifen, thread safe? Allgemeine Java-Themen 10
A OOP Wie auf Objekt der Superklasse zugreifen? Allgemeine Java-Themen 6
D auf Bilder im Jar-Archiv zugreifen Allgemeine Java-Themen 11
S auf public void Methode zugreifen ohne static Allgemeine Java-Themen 11
Gossi Mit Java auf Linux- & Windowssysteme zugreifen? Allgemeine Java-Themen 4
M Wie auf Webcam zugreifen= Allgemeine Java-Themen 6
P aus Thread auf Form zugreifen Allgemeine Java-Themen 9
K Auf Methoden der Runnable Klasse zugreifen Allgemeine Java-Themen 2
T Mit Java auf Dateien zugreifen die auf einem Server liegen Allgemeine Java-Themen 5
D von einer Klasse auf Komponente in anderer Klasse zugreifen Allgemeine Java-Themen 5
I Wie PDF in jar packen und drauf zugreifen? Allgemeine Java-Themen 22
ruutaiokwu auf priv. konstruktor von "aussen" zugreifen? Allgemeine Java-Themen 4
StupidAttack Auf Cookies in Mozilla Firefox zugreifen Allgemeine Java-Themen 3
A Auf Steuerelemente eines Dialoges zugreifen Allgemeine Java-Themen 2
A Wie zur Laufzeit auf Objekte zugreifen Allgemeine Java-Themen 7
P In Sourcecode auf Testcode zugreifen Allgemeine Java-Themen 12
F mit Applet auf .htaccess geschützte Dateien zugreifen Allgemeine Java-Themen 3
S Swing mit JEditorPane per HTML auf Bilder in JAR zugreifen. Allgemeine Java-Themen 3
P [Regulärer Ausdruck] Auf Gruppe mit Quantifier separat zugreifen? Allgemeine Java-Themen 2
T JNI -> auf Java-Variablen etc zugreifen Allgemeine Java-Themen 6
S auf freigebene Ordner zugreifen Allgemeine Java-Themen 6
Balbes Auf Datei im Dateisystem aus einem jar-Archiv zugreifen Allgemeine Java-Themen 4
T Mit JNI von C++ auf ein laufendes Java-Programm zugreifen Allgemeine Java-Themen 10
U auf Objekte mit variablem Namen zugreifen Allgemeine Java-Themen 4
L Aus Java auf Browser Formularfelder zugreifen Allgemeine Java-Themen 9
badfish Inerhalb der [void main] auf ein Objekt der [protected void] zugreifen Allgemeine Java-Themen 13
C Auf Oberflaechen Elemente zugreifen Allgemeine Java-Themen 8
T Mit 2 Klassen auf selben Thread zugreifen Allgemeine Java-Themen 11
A Auf Methode in actionPerformed zugreifen Allgemeine Java-Themen 3
T Mit Java Programm auf Firefox zugreifen Allgemeine Java-Themen 2
S Auf Array aus Methode zugreifen Allgemeine Java-Themen 3
MQue aus einem Applet auf Word zugreifen Allgemeine Java-Themen 3
D Auf annotierte Felder oder Methoden zugreifen Allgemeine Java-Themen 4
C JNI: Auf ArrayList und Klassen zugreifen Allgemeine Java-Themen 13
A kann nicht auf properties außerhalb jar zugreifen Allgemeine Java-Themen 3
H Kann ein Runnable Objekt auf das Thread Objekt zugreifen? Allgemeine Java-Themen 4
G auf variable in anderer class zugreifen Allgemeine Java-Themen 2
V [solved]Von Java Prog über ein JSP/Servlet auf DB zugreifen Allgemeine Java-Themen 3
W Auf markierten Text zugreifen? Allgemeine Java-Themen 5
J SMS zugreifen Allgemeine Java-Themen 2
H Auf ConsoleWindowClass zugreifen? Allgemeine Java-Themen 3
T auf Klasse in Default package zugreifen Allgemeine Java-Themen 10
G per Reflection auf private Klassenattribute zugreifen? Allgemeine Java-Themen 9
F Zugreifen auf vorher erzeugte Zufallszahl! Allgemeine Java-Themen 4
M mit java auf bestehende progs zugreifen Allgemeine Java-Themen 3
D Auf Laufwerk bzw. Ordner auf einem Server zugreifen Allgemeine Java-Themen 7
M auf files des packages zugreifen Allgemeine Java-Themen 2
N Auf Bilder / Dateien innerhalb eines jar-Archives zugreifen Allgemeine Java-Themen 2
J Netbeans: wie auf grafische elemente zugreifen, andere Datei Allgemeine Java-Themen 2
G Mit Java auf windows 2003 userrechte zugreifen geht sowas ? Allgemeine Java-Themen 2
K Mit Jar-File auf "External JAR´s" zugreifen - Clas Allgemeine Java-Themen 2
S Aufs Handy zugreifen Allgemeine Java-Themen 2
B Fehler:Mein Applet kann nicht auf zwei txt-Dateien zugreifen Allgemeine Java-Themen 2
G mit Java auf Adressliste von MS Outlook zugreifen. Allgemeine Java-Themen 3
M aus einer Unterklasse auf den parent zugreifen Allgemeine Java-Themen 2
M auf werte eines objektes zugreifen Allgemeine Java-Themen 5
O String übergeben ist name eines JTextField wie zugreifen Allgemeine Java-Themen 9
T JNI: Wie in C auf ein Java-Objekt zugreifen ? Allgemeine Java-Themen 5
K auf Internetseiten zugreifen / Links verfolgen Allgemeine Java-Themen 2
P Kann man mit Java auf Windows Dienste zugreifen bzw steuern? Allgemeine Java-Themen 7
lin Auf Methode von anderer Klasse zugreifen Allgemeine Java-Themen 5
D Auf jar-File zugreifen Allgemeine Java-Themen 4
M Auf Router zugreifen Allgemeine Java-Themen 10
G kann man auf os zugreifen? Allgemeine Java-Themen 2
T auf methode zugreifen Allgemeine Java-Themen 3
R aus Jar auf externe XML-Datei zugreifen Allgemeine Java-Themen 14
Luma Auf Jar zugreifen. Allgemeine Java-Themen 6
C Mit Java auf eine HTML-Seite zugreifen Allgemeine Java-Themen 3
T mit Java per DDE auf Windows-Programme zugreifen Allgemeine Java-Themen 7
Z auf static Methode aus anderen Package zugreifen? Allgemeine Java-Themen 7
S Auf statische Funktionen mit Java Reflections zugreifen Allgemeine Java-Themen 3
M Auf Klassen in jar-File (nicht im CLASSPATH) zugreifen Allgemeine Java-Themen 4
Maxi-JOO Klassen Dummy Objekt in anderen Constructor übergeben Allgemeine Java-Themen 5
N Value Wert aus HTML-Button mittels thymeleaf spring an java übergeben Allgemeine Java-Themen 2

Ähnliche Java Themen

Neue Themen


Oben