Wegen ArrayLisyt erwirrt...

StupidAttack

Bekanntes Mitglied
Sorry Leute aber ich steh gerade vollkommen aufem Schlauch und bin trotz Suche nicht weitergekommen.

Und zwar will ich ne ArrayList vom Typ Object (damit allet da drinn Platz hat) nach einem bestimmten Objekt mit einem bestimmten Attribut durchsuchen.

Java:
    public Stock getStock(String name){
        
        for (int i = 0; i < depositAccount.size(); i ++) {  //depositAccount ist die ArrayList
            
            Object  buffer = depositAccount.get(i);        //jetzt hab ich nen spezifisches Objekt
            
            if (buffer.getClass().equals(Stock.class))  // Wie kann ich jetzt auf die Methoden (getter) //der spezifischen Klassen zugreifen? Irgendwie bin ich verwirrt! 

                if ( (Stock) buffer.getName()).equals(name)
                       return depositAccount.get(i);   //jetzt soll hier das gecastete Objekt zurückgegeben werden
        }
        
    }


Achja Stock ist eine von vielen möglichen Klassen, ich würde für jede mögliche Klasse gleich vorgehen, will jetzt aber euch nicht zutexten.


Versteht ihr was ich meine? Irgendwie habe ich den schleichenden Verdacht, dass wenn ich mich besser artikulieren könnte, ich die Hilfe nicht bräuchte ;)

Danke
 
Zuletzt bearbeitet:
G

Gast2

Gast
Java:
if (Object instanceof Stock) {
    // Object nach Stock casten und auf die getter/setter zugreifen
}

Aber warum unbedingt ne Object list? :/

EDIT:
Vertippselt
 
Zuletzt bearbeitet von einem Moderator:
T

Tomate_Salat

Gast
Versuchs mal damit:
ersetze
Java:
if (buffer.getClass().equals(Stock.class))
mit:
Java:
if (buffer.getClass() == Stock.class)

MFG

Tomate_Salat

@EikeB: instanceof
 

StupidAttack

Bekanntes Mitglied
Java:
if (Object instaceof Stock) {
    // Object nach Stock casten und auf die getter/setter zugreifen
}

Aber warum unbedingt ne Object list? :/


Ich weiss ne Object List zerstört so ziemlich das ganze Prinzip der ArrayList, da könnte ich genausogut nen Vector nehmen, doch prinzipiell, so dachte ich, sollte das doch möglich sein. Ich brauche einfach nen dynamischen Speicher der versch,. Typen aufnehmen kann
 

StupidAttack

Bekanntes Mitglied
Noch immer funzt es ned, hab jetzt die Funktion den Ratschlägen entsprechend verschönert:
Java:
    public Stock getStock(String name){
        
        for (int i = 0; i < depositAccount.size(); i ++) {
            
         
            Object buffer = depositAccount.get(i);
             
            if (buffer instanceof Stock){  
                
            buffer = (Stock)buffer;
            if (buffer.getName().equals(name))   // Fehler hier: cannot find Symbol
            return depositAccount.get(i);    //   incompatible types
            }    
             else
               retrun null;
              
        }
        
    }
 
Zuletzt bearbeitet:
G

Gast2

Gast
Haben deine verschiedenen Typen denn nicht irgendwas gemeinsam? Gemeinsame Oberklasse oder nen gemeinsamen Interface? Dann könnte man das ganze etwas schöner lösen.
Das sieht für mich nen bissl nach designfehler aus.

EDIT:
Fehler hier: cannot find Symbol
Ist doch auch klar. buffer ist noch vom Typ Object und hat keine Methode getName().
Du musst dir da schon ne neue Variable vom Typ Stock definieren.
 
T

Tomate_Salat

Gast
buffer ist ein Objekt und kein Stock
Java:
if (((Stock)buffer).getName().equals(name))

und das gleiche musst du beim return beachten:

Java:
return (Stock)...
 

StupidAttack

Bekanntes Mitglied
Haben deine verschiedenen Typen denn nicht irgendwas gemeinsam? Gemeinsame Oberklasse oder nen gemeinsamen Interface? Dann könnte man das ganze etwas schöner lösen.
Das sieht für mich nen bissl nach designfehler aus.


ja da hast wohl recht, ich hab zwar ne abstrakte Klasse von der alle Typen die in die Object Array List reingesteckt werden, erben, doch da sie Abstrakt ist, kann ich mir die Polymorphie nicht zu eigen machen. Ich hoffe ich verwechsle da nichts, doch prinzipiell ändert es nichts wenn ich meine Abstrakte Klasse in eine Oberklasse wechsle, oder? (abgesehen vom bereits erwähntem)

Kann ich in einer simplen Oberklasse weiterhin abstrakte Methoden definieren?


Ps: gebs zu ist peinlich wenn ich gerade meine 30igste Klasse zu designen versuche und sowas nachfrage..Danke
 

StupidAttack

Bekanntes Mitglied
buffer ist ein Objekt und kein Stock
Java:
if (((Stock)buffer).getName().equals(name))

und das gleiche musst du beim return beachten:

Java:
return (Stock)...


Java:
    public Stock getStock(String name){
        
        for (int i = 0; i < depositAccount.size(); i ++) {
            
         
            Object buffer = depositAccount.get(i);
            
            if (buffer instanceof Stock){  
                
            buffer = (Stock)buffer;
            
            if (((Stock)buffer).getName().equals(name)){
                return (Stock)depositAccount.get(i);
            } 
            }
            else 
                return null;
              
        }
        
    }

Mhh ich woltle den ganzen Boolean casten, aber nur weil Tomatensalat es mir so gesagt hat :)
edit: oder weil mein Copy Paste heimlich 2 Klammern rausnahm :)
Danke Leute, die obige Lösung funzt, für die nachwelt...
 

Morl99

Mitglied
ja da hast wohl recht, ich hab zwar ne abstrakte Klasse von der alle Typen die in die Object Array List reingesteckt werden, erben, doch da sie Abstrakt ist, kann ich mir die Polymorphie nicht zu eigen machen. Ich hoffe ich verwechsle da nichts, doch prinzipiell ändert es nichts wenn ich meine Abstrakte Klasse in eine Oberklasse wechsle, oder? (abgesehen vom bereits erwähntem)

Denkfehler ;) Das kannst du natürlich, es spricht nichts gegen ArrayList<AbstrakeKlasse>. Abstrakt heißt nur, dass du eben kein AbstrakteKlasse a = new AbstrakteKlasse(); machen kannst.

Und wenn du das lesbarer gestalten willst, mach es doch so:
Java:
 if (buffer instanceof Stock){  
                
            Buffer bufferStock = (Stock)buffer;
            
            if (bufferStock.getName().equals(name)){
                return (Stock)depositAccount.get(i);
            }

mhh achso das macht es nur an einer stelle lesbarer... das andere kommt aus der List.. naja das Problem ist weg wenn du eine gemeinsame Oberklasse benutzt.
 

StupidAttack

Bekanntes Mitglied
Denkfehler ;) Das kannst du natürlich, es spricht nichts gegen ArrayList<AbstrakeKlasse>. Abstrakt heißt nur, dass du eben kein AbstrakteKlasse a = new AbstrakteKlasse(); machen kannst.

Und wenn du das lesbarer gestalten willst, mach es doch so:
Java:
 if (buffer instanceof Stock){  
                
            Buffer bufferStock = (Stock)buffer;
            
            if (bufferStock.getName().equals(name)){
                return (Stock)depositAccount.get(i);
            }

mhh achso das macht es nur an einer stelle lesbarer... das andere kommt aus der List.. naja das Problem ist weg wenn du eine gemeinsame Oberklasse benutzt.

Mhh, dann kann ich ja einfach statt Object meine abstrakte Klasse nutzen; Supi danke dir :)

Bist du wirklich 11 jahre alt ?:shock:
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
pkm Frage wegen möglichem grouping-hack Java Basics - Anfänger-Themen 22
kilopack15 Verzweiflung wegen Berechnung mit Multithreading Java Basics - Anfänger-Themen 1
I Verständnis Frage wegen einer Aufgabe Java Basics - Anfänger-Themen 10
R NullPointerException wegen JPanel oder doch nicht ? Java Basics - Anfänger-Themen 7
S Oberfläche aktualisiert nicht wegen sleep Java Basics - Anfänger-Themen 1
M Benötige Hilfe wegen Problem Java Basics - Anfänger-Themen 4
A Frage wegen Chatbefehlen... Java Basics - Anfänger-Themen 13
R Problem mit Javaaufgabe wegen Wurzel Java Basics - Anfänger-Themen 7
C Stringeingabe: kein Satz wegen Leerzeichen möglich Java Basics - Anfänger-Themen 3
G Prüfen ob array[1] existiert wegen OutofBounds! Java Basics - Anfänger-Themen 4
B Exception bei ImageIO wegen sonderzeichen Java Basics - Anfänger-Themen 11
I Frage wegen Wörterbuch Programmierung Java Basics - Anfänger-Themen 13
0x7F800000 getParameter in doPost() funktioniert nicht wegen enctype? Java Basics - Anfänger-Themen 11
G Frage wegen Applet( Linie) Java Basics - Anfänger-Themen 2
K Frage Wegen Binomialkoeffizienten Java Basics - Anfänger-Themen 28
G Frage wegen Quadratische Gleichung Java Basics - Anfänger-Themen 9
G error wegen heap space Java Basics - Anfänger-Themen 4
K Frage wegen Mittelwert Java Basics - Anfänger-Themen 32
S Jcombobox und 2maliges anzeigen wegen ItemStateChanged? Java Basics - Anfänger-Themen 3
A 2D Array mit fehler wegen inkompatiblem typ? Java Basics - Anfänger-Themen 5
G Warum das Prog mehrmals das gleiche macht wegen ItemListener Java Basics - Anfänger-Themen 4
L NullpointerException wegen wahrscheinlichem Multithreading Java Basics - Anfänger-Themen 4
R eine frage wegen methoden und if statments Java Basics - Anfänger-Themen 6
zilti Java motzt wegen Exceptions Java Basics - Anfänger-Themen 5
L Wegen TableSorter wird falsche Zeile einer Tabelle gelöscht? Java Basics - Anfänger-Themen 2
F Kopiren aber zugriff verweigert wegen schreibschutz Java Basics - Anfänger-Themen 3
S ich stör schon widr wegen meine gui Java Basics - Anfänger-Themen 2
T Frage wegen UNI Aufgabe Java Basics - Anfänger-Themen 4
R Frage wegen Vererbung Java Basics - Anfänger-Themen 5
R 2 Fragen wegen File Java Basics - Anfänger-Themen 14

Ähnliche Java Themen

Neue Themen


Oben