Datentypen Klassenattribut aus Objekt in generischer Liste

DanSc94

Mitglied
Hallo,

ich stehe vor folgendem Problem:
Ich habe eine generische Klasse public MinimalList<T>, in der verschiedene Klassenobjekte gespeichert werden, im Moment für jede Klasse eine seperate Liste. Nun möchte ich auf die Klassenattribute zugreifen, was leider nicht funktioniert.

Wie kann ich das am besten hinkriegen?
 

Naryxus

Aktives Mitglied
Wenn ich dich richtig verstanden habe, hast du beispielsweise eine
Java:
public class Banana
, von der du verschiedene Instanzen in einer
Java:
MinimalList<Banana> bananas
gespeichert hast?
Dann solltest du zuerst einmal an das konkrete Banana-Objekt gelangen, vermutlich über ein
Java:
Banana banana = bananas.get(0)
. Nun kannst du über die Variable banana auf die Klasse zugreifen.
Am sinnvollsten wird hier wohl eine Getter-Methode in der Klasse sein.

Ich hoffe, ich hab dein Problem richtig verstanden?
 

DanSc94

Mitglied
Wir sollen in der Klasse MinimalList<T> jedoch mehrere Instanzen aus verschiedenen Klassen speichern.
Insgesamt sind es drei, und man soll jedes beliebiges Objekt in der Liste speichern können.
Java:
public class MinimalList<T> {
    private class ListCell<T> {
        T content;
        ListCell<T> prev;
        ListCell<T> next;
     
        ListCell(T c, ListCell<T> p, ListCell<T> n) {
            this.content = c;
            this.prev = p;
            this.next = n;
        }
     
        public T getContent() {
            return content;
        }
    }
 
    private ListCell<T> first, last;
 
    public MinimalList() {
        this.first = this.last = null;
    }
 
    public void add(T elmt) {
        if (this.first == null) {
            ListCell<T> tmp = new ListCell(elmt, null, null);
            this.first = tmp;
        }
        else {
            ListCell<T> tmp = new ListCell(elmt, last, null);
            this.last.next = tmp;
        }
    }

Nun frage ich mich wie ich aus einem Objekt T(oder spezifisch aus einer ListCell<T>) wieder an die Klassenattribute gelange..
 

Naryxus

Aktives Mitglied
Naja prinzipiell kannst du in einer Liste vom generischen Typ T erstmal auch nur Elemente vom Typ T speichern.

Du könntest eine Oberklasse Item für deine zu speichernden Klassen deklarieren und sie alle davon erben lassen. Dann kannst du eine MinimalList<Item> erstellen und alle deine Objekte da reinstecken.
Bei dem Auslesen kannst du dann einen Cast auf die entsprechende Klasse machen und somit auf die Klassenattribute zugreifen.

Das ist keine richtig schöne Variante. Aber eine bessere fällt mir auf die schnelle nicht ein. Ich werde nochmal drüber nachdenken. Vielleicht fällt ja auch jemand anderem was ein.
 

Joose

Top Contributor
T ist nur ein Platzhalter für einen(!) konkreten Typ. Daher wird es nicht möglich sein einfach 3 beliebige Typen in ein und derselben Liste zu speichern.
Außer wie Naryxus schon erwähnt hat wenn alle von der gleichen Basisklasse ableiten.

Ich glaube es wäre praktisch wenn du die genaue Aufgabenstellung hier posten würdest. Möglicherweise ist es uns dann verständlicher was verlangt ist.
 

DanSc94

Mitglied
Ah, dann kann ich ja einfach MinimalList<T,U,V> benutzen oder nicht? Oder möglicherweise über ein Interface comparable<T>(Wurde in der Vorlesung angesprochen)?

Hier die Aufgabenstellung(Aufgabe B): https://sdqweb.ipd.kit.edu/lehre/WS1516-Programmieren/assignment05.pdf

@Joose: Ich habe jedoch für jede Klasse eine Liste erstellt, sprich eine Liste banks für alle Banken, eine Liste accounts für alle Konten und eine Liste users für alle Kontoinhaber, trotzdem komme ich nicht an die Klassenattribute.. vielleicht mach ich ja nur etwas falsch?
 
Zuletzt bearbeitet:

Joose

Top Contributor
Ja in der Aufgabe steht die "MinimalList" soll generisch werden. Diese Datenstruktur (Liste) kann man verwenden um Objekte eines beliebigen Datentypen zu verwalten.
Sprich jedes Objekt von MinimalList kann nur Objekte eines bestimmten Typs verwalten. Welcher Typ das ist wird bei der Initialisierung des Objektes angegeben.
Java:
MinimalList<Bank> banks = new MinimalList<Bank>(); // kann nur Bank Objekte enthalten
MinimalList<Account> accounts = new MinimalList<Account>(); // kann nur Account Objekte enthalten
 

DanSc94

Mitglied
Ahh, okay ich denke damit kann ich was anfangen. Ich probier mal weiter aus, vielen Dank dafür!

Muss ich dann MinimalList<Bank, Account, AccountHolder> benutzen oder geht auch MinimalList<T>?
 
Zuletzt bearbeitet:

DanSc94

Mitglied
Ich habe immernoch Probleme auf die Klassenattribute zuzugreifen..
Ich möchte folgendes tun:
Ich will in der Liste users (MinimalList<AccountHolder> users = new MinimalList<AccountHolder>(); ) überprüfen, ob es bereits ein Objekt mit dem Klassenattribut int personalNumber gibt.

Java:
public T getUser(T elmt) {
        ListCell<T> tmp = this.first;
      
        while (tmp != null) {
            if (tmp.content.personalNumber == elmt) {
                return tmp.content;
            }
            tmp = tmp.next;
        }
        return null;
    }

gibt mir immer den Fehler: personalNumber cannot be resolved or is not a field.
 

Naryxus

Aktives Mitglied
Ich glaube du vermischst da einiges. Du musst dich von dem Gedanken trennen, dass du in deiner generischen Liste einen bestimmten Typen betrachtest.

Du musst im Prinzip außerhalb über die Liste iterieren.
Java:
public boolean getUser(AccountHolder user) {
   ListCell<AccountHolder> tmp = (ListCell<AccountHolder>) users.first;

   while(tmp != null) {
      if(tmp.content.personalNumber == user.personalNumber)
         return true;
      tmp = tmp.next;
   }

   return false;
}

Diese Methode muss aber woanders als in der Klasse MinimalList liegen. Die Klasse MinimalList weiß erstmal nur, dass sie Elemente vom Typ T enthält. Und kann deswegen nicht darauf schließen, dass sie gerade AccountHolder beinhaltet.
 

Joose

Top Contributor
Ist auch klar da ListCell eine private innere Klasse von MinimalList ist. Daher kann ListCell nicht außerhalb bekannt sein.

In welcher Klasse steht die Methode "getUser()"? Was wird dieser Methode als Parameter übergeben?
 

DanSc94

Mitglied
Habe ListCell dann auch auf public gesetzt.

getUser() in MinimalList:
Java:
public T getUser(int elmt) {
        ListCell<T> tmp = this.first;
    
        while (tmp != null) {
            if (comparePN(tmp.content, elmt) == true) {
                return tmp.content;
            }
            tmp = tmp.next;
        }
        return null;
    }

comparePN() in AccountHolder:
Java:
public boolean comparePN(AccountHolder user, int personalNumber) {
        if (user.personalNumber == personalNumber) {
            return true;
        }
        return false;
    }

Das habe ich im Moment.. comparePN(T, int) funktioniert aber nicht..
 

DanSc94

Mitglied
UUKfWE8.png

Das wird als Fehler angezeigt.
 

Joose

Top Contributor
Das eigentliche Thema ist schon gelöst -> aus MinimalList eine generische Klasse zu machen.

Bitte mache für dein aktuelles Problem ("Welche Methode gehört in welche Klasse und warum funktioniert dieses und jenes nicht") einen neuen Thread auf.
Danke!

Dort kannst du nochmal deine aktuellen Code und dein Ziel genau erklären.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
N Lwjgl 3d Objekt wird schmaler, wenn es sich dreht Allgemeine Java-Themen 0
B Ein Objekt einer Klasse mehreren anderen Klassen zur Verfügung stellen? Allgemeine Java-Themen 6
T Objekt Array Aufgabe mit Busdatenbank Allgemeine Java-Themen 2
Maxi-JOO Klassen Dummy Objekt in anderen Constructor übergeben Allgemeine Java-Themen 5
el_niiinho13 Objekt auf der Konsole ausgeben lassen Allgemeine Java-Themen 8
d.lumpi Aus Einer Klasse auf ein Objekt einer anderen Klasse Zugreifen Allgemeine Java-Themen 1
A Objekt aus anderen Objekten machen Allgemeine Java-Themen 8
SaftigMelo In einem Winkel Objekt bewegen Allgemeine Java-Themen 2
E Datentypen Wie kann ich die Längen der unterschiedlichen Ebenen aus einem Objekt lesen von dem ich weiß, dass es ein mehrdimensionaler Array ist? Allgemeine Java-Themen 3
H Objekt speichern und laden Allgemeine Java-Themen 1
H Objekt speichern und laden Allgemeine Java-Themen 1
J Objekt in Bytestream umwandeln Allgemeine Java-Themen 12
J Wie kann ich von Vornherrein einen Fokus auf ein Objekt entfernen? Allgemeine Java-Themen 3
J Information von getSource() Objekt auslesen Allgemeine Java-Themen 1
Drachenbauer Wie stelle ich fest, ob ein Objekt in meinem Array vorkommt? Allgemeine Java-Themen 5
S Variable als Objekt Name Allgemeine Java-Themen 3
D Input/Output Zwischen zwei ID-Räumen unterscheiden und Objekt löschen Allgemeine Java-Themen 16
L Objekt aus Objekt-array "löschen" Allgemeine Java-Themen 2
T Objekt mit String und Int aus TxT Datei erstellen Allgemeine Java-Themen 23
T Objekt in Array packen Allgemeine Java-Themen 6
K Methodenaufruf mit String / String zu Objekt konvertieren Allgemeine Java-Themen 8
S Neues Objekt darstellen Allgemeine Java-Themen 4
J Best Practice Objekt an alle Klassen verteilen ( Discord Bot ) Allgemeine Java-Themen 7
D Objekt-Suche mit mehreren optionalen Parametern Allgemeine Java-Themen 6
M Klassen Objekt weiter geben Allgemeine Java-Themen 1
B Klassen Objekt erzeugen und Konstruktor aufrufen - Welche Lösung ist besser? Allgemeine Java-Themen 2
L Variablen Eigenes Objekt wie z.B. einen Integer zuweisen Allgemeine Java-Themen 3
D Konstruktor - jedes Objekt einzeln erzeugen - alternative? Allgemeine Java-Themen 8
S Applet Überprüfen ob ein Objekt angeklickt wurde Allgemeine Java-Themen 2
RalleYTN 3D Objekt Translation basierend auf Rotation (Probleme mit Z Rotation) Allgemeine Java-Themen 0
B Von String zu <Objekt> ||Speichern/Laden Allgemeine Java-Themen 17
G Neues Objekt aus List<JsonObject> mit Stream Allgemeine Java-Themen 4
P Threads Objekt im Konstruktor anders wie im Run()-Block Allgemeine Java-Themen 10
R Objekt funktioniert nicht auf iOS Allgemeine Java-Themen 15
K Textdatei als Objekt Allgemeine Java-Themen 4
Viktim Classenname zu Objekt Allgemeine Java-Themen 4
P Entity Objekt Methoden vs Service methoden Allgemeine Java-Themen 2
O Klassen Bruch im gleichen Objekt Speichern Allgemeine Java-Themen 1
P Liste zu Objekt umwandeln Allgemeine Java-Themen 4
C Liste checken auf MINDESTENS ein Objekt | Bukkit Allgemeine Java-Themen 3
K Best Practice JFrame Objekt allgemein zugänglich machen Allgemeine Java-Themen 8
B ArrayList in ein Objekt legen Allgemeine Java-Themen 1
D Objekt entlang eines Funktionsgraphens bewegen Allgemeine Java-Themen 6
M Objekt serialisieren/deserialisieren und in einer SQLite-Datenbank speichern Allgemeine Java-Themen 3
D Java Objekt als Service in Runtime registrieren Allgemeine Java-Themen 1
S Interaktion mit einer website (website als Objekt?) Allgemeine Java-Themen 3
J OOP Überwachen, ob ein Objekt erzeugt wird Allgemeine Java-Themen 9
S Byte Array welches in Laufzeit aufgelöst wird // Objekt Array Allgemeine Java-Themen 3
Thallius Hash über serialisiertes Objekt? Allgemeine Java-Themen 3
Developer_X Input/Output Serialisiertes Objekt speichern und laden Allgemeine Java-Themen 1
C Generics Objekt in ArrayList Allgemeine Java-Themen 2
L Klassen Konstruktor soll Objekt anderer Klasse erzeugen Allgemeine Java-Themen 2
F Neues Objekt aus .CSV definition Allgemeine Java-Themen 3
K Methoden Objekt wird nicht erkannt Allgemeine Java-Themen 11
P Objekt mit verschiedenen Datentypen Allgemeine Java-Themen 5
T Objekt kontaktiert seinen "erzeuger" Allgemeine Java-Themen 5
S Objekt orientierte Programmierung Allgemeine Java-Themen 7
C Objekt Datenverlust nach Methodenaufruf Allgemeine Java-Themen 9
H JavaFX Von einer Methode auf stage-Objekt zugreifen Allgemeine Java-Themen 3
T WeakReference/PhantomReference: Mitbekommen WELCHES Objekt nun GC'ed wird Allgemeine Java-Themen 2
T Class-Objekt mit URLClassloader Allgemeine Java-Themen 7
P Konsoleneingabe übernehmen und Objekt instanzieren. Allgemeine Java-Themen 5
E Auf Java-Objekt aus anderer Instanz zugreifen Allgemeine Java-Themen 26
L Klassen Polymorphie:2 Attribute gleichen Namens in einem Objekt Allgemeine Java-Themen 6
P Objekt Array in Datei Speichern Allgemeine Java-Themen 3
F Dynamisch ein Objekt einer bestimmten Subklasse erstellen Allgemeine Java-Themen 7
D Player Objekt - Frame über Server anzeigen lassen. Allgemeine Java-Themen 3
V Objekt löschen Allgemeine Java-Themen 7
A OOP Wie auf Objekt der Superklasse zugreifen? Allgemeine Java-Themen 6
S Datei in File-Objekt mit UTF-8 einlesen Allgemeine Java-Themen 2
M neues Objekt speichern, nicht Referenz Allgemeine Java-Themen 10
B synchronisierter zugriff auf Objekt Allgemeine Java-Themen 6
F Objekt einer Datei verschieben, aber Verzeichnispfad fehlt Allgemeine Java-Themen 6
C Objekt Typ herausfinden Allgemeine Java-Themen 5
E Objekt beim Erzeugen in ArrayList Allgemeine Java-Themen 9
M Objekt prüfen auf null ->Invocation Target Exception??? Allgemeine Java-Themen 2
M Objekt aus Liste in Liste suchen/löschen Allgemeine Java-Themen 6
D Eigenen Objekt Pool Allgemeine Java-Themen 15
C blueJ: Objekt wird nicht in Objektleiste angezeigt Allgemeine Java-Themen 8
T Objekt 2x deserialisieren, aber nur 1x im Heap haben? Allgemeine Java-Themen 4
sambalmueslie Benachrichtigung bei neuer Objekt-Instanz Allgemeine Java-Themen 5
U Konstante in Objekt definieren Allgemeine Java-Themen 6
D this mit Objekt überschreiben Allgemeine Java-Themen 17
R Synchronized - auf welchem Objekt Allgemeine Java-Themen 16
E Objekt erstellen Allgemeine Java-Themen 7
M Timer von nicht existiertem Objekt stopen Allgemeine Java-Themen 5
M Swing-Frontend abhängig von ausgewähltem Objekt Allgemeine Java-Themen 4
J Lebt das Objekt noch?? Allgemeine Java-Themen 12
K Objekt einer konkreten Implementierung eines Interfaces durch übergebenen String Allgemeine Java-Themen 2
K Objekt-Austausch zwischen zwei Programmen über System-Clipboard Allgemeine Java-Themen 5
S Performance Frage: Objekt oder static? Allgemeine Java-Themen 33
B Speicherverbrauch Objekt-Referenz Allgemeine Java-Themen 11
D Browser-Objekt erzeugen Allgemeine Java-Themen 8
B FileWriter / FileReader testen / Mock-Objekt für Unit Tests? Allgemeine Java-Themen 6
A Iterationen einer XML-Datei in einem Objekt sichern Allgemeine Java-Themen 5
R Objekt zur Laufzeit zerstören? Allgemeine Java-Themen 12
hdi Frage zur Objekt Initialisierung Allgemeine Java-Themen 4
X Prozess-Objekt nach Ausführung der destroy-Methode null oder nicht null ? Allgemeine Java-Themen 10
T Serialisiertes Objekt über Socket nachladen Allgemeine Java-Themen 8
G Entity Objekt Allgemeine Java-Themen 2

Ähnliche Java Themen

Neue Themen


Oben