TableModel

ein schönen guten Abend,

kann mir evtl jemand bei einem Problem helfen? Wahrscheinlich übersehe ich nur etwas, komme aber seit Stunden nicht drauf.

Ich schreibe gerade an einem ersten eigenen Projekt für eine Lagerverwaltung.
Hierzu habe ich folgendes Model erstellt :

Code:
public class LagerPosList<L> implements TableModel{
    
    List<L> liste;
    
    public LagerPosList () {
        
        liste = new ArrayList<L> ();
        
    }
    
    public L get (int i) {
        return liste.get(i);
    }
    
    public void add (L l) {
        liste.add(l);
    }
......

hier kommen jetzt die zu überschreibenden Methoden aus dem Interface "TableModel" .

und hier komme ich nicht weiter

Code:
@Override
    public Object getValueAt(int rowIndex, int columnIndex) {
        
        L pos = get(rowIndex);
        
        switch (columnIndex) {
            case 1 : return pos.   
        }
        
    }
Eigendlich sollte ich doch mit der Variable pos auf das Objekt in der "liste" mit dem Index (rowIndex) zugreifen können.
So hatte ich vor zu schreiben:

case 1: return pos.getBestellnummer;
case 2: return pos.getLagerplatz;
usw.

Ich habe allerdings mit der Referenz pos keinen Zugriff auf das Objekt.

Ich denke, die Erfahrenen hier sehen das Problem sofort.

vielen Dank

Oli
 
Mal abgesehen davon, dass pos.getBestellnummer kein Methodenaufruf ist: zur Übersetzungszeit ist der Typ L dem Compiler nicht bekannt. Daher kannst Du auch nicht die Methoden einer bestimmten Klasse aufrufen.

Entweder implementierst Du das TableModel für diese spezielle Klasse, oder Du verlangst, dass L Subtyp dieser Klasse ist oder Du verwendest Reflection.

EDIT: auch eine Möglichkeit, wäre die Verwendung eines Mappers.
 
Mal abgesehen davon, dass pos.getBestellnummer kein Methodenaufruf ist: zur Übersetzungszeit ist der Typ L dem Compiler nicht bekannt. Daher kannst Du auch nicht die Methoden einer bestimmten Klasse aufrufen.

Entweder implementierst Du das TableModel für diese spezielle Klasse, oder Du verlangst, dass L Subtyp dieser Klasse ist oder Du verwendest Reflection.

EDIT: auch eine Möglichkeit, wäre die Verwendung eines Mappers.
Hab das jetzt so geändert. Bringt aber trotzdem nichts.
Die Klasse ist "Lagerposition"

Code:
public class LagerPosList<Lagerposition> implements TableModel{
Oder meintest Du, ich sollte das TableModel direkt in der Klasse "Lagerposition" implementieren?
 
public class LagerPosList<Lagerposition> implements TableModel{
Damit benennst Du nur den Typparameter in Lagerposition um :)

Java:
public class LagerPosList<L extends Lagerposition> implements TableModel {
Wäre eine Möglichkeit oder eben direkt in der Klasse LagerPosList
Java:
private List<Lagerposition> liste;
Die Frage wäre halt, ob bzw. warum die LagerPosList generisch sein soll.
 
Damit benennst Du nur den Typparameter in Lagerposition um :)

Java:
public class LagerPosList<L extends Lagerposition> implements TableModel {
Wäre eine Möglichkeit oder eben direkt in der Klasse LagerPosList
Java:
private List<Lagerposition> liste;
Die Frage wäre halt, ob bzw. warum die LagerPosList generisch sein soll.
Das wars. Danke. LagerPosList muß nicht wirklich generisch sein. Somit habe ich den Typparameter entfernt und es läuft .
Auch wenn mir noch nicht ganz einleuchtet, weshalb der Typparameter in der Klassendeclaration gestört hat.
Wo liegt den der Unterschied zwischen

Code:
public class LagerPosList <L extends Lagerposition> implements Table Model
und

Code:
public class LagerPosList <Lagerposition> implements Table Model
Aber erstmal läuft das und ich komme weiter. Danke dafür.

v.d.
 
K

kneitzel

Dieses <Lagerliste> sagt, dass Du ein Generics Namens Lagerliste haben willst. Es ist also ein neuer Name für ein Generics und hat nichts mit der Klasse Lagerliste zu tun.
Also du bennenst den Generic, X, Y, Otto, Lagerliste, MeinCoolerGeneric, .... Vollkommen egal und unabhängig von existierenden Klassen.

<T extends Lagerliste> besagt, dass du ein Generics mit Namen T haben willst, der aber von Lagerliste erben muss. Macht natürlich nur ein, wenn es Du Klassen von Lagerliste geben soll...
 
AAh OK verstehe. Also im ersten Fall <Lagerliste> ist das nur eine Definition , heißt aber noch nicht, daß ich von Lagerliste erbe.

vielen Dank
 
Passende Stellenanzeigen aus deiner Region:

Neue Themen

Oben