Generics und vererbung

lies

Mitglied
hallo zusammen,

ich habe ein problem mit der vererbung von generics. folgende superklasse wird verwendet:
Java:
package Model;

import java.util.*;

public class ModelListData extends AbstractModel {
	
	private List<? extends Wrapper.Model> list;
	
	public ModelListData() {
		
	}
	
	public ModelListData(ArrayList<? extends Wrapper.Model> list) {
		this.list = list;

	}
	
	public List<? extends Wrapper.Model> getList() {
		return list;
	}
	
	public void newData(Wrapper.Model model) {
		list.add(model); //Compiler Fehler
	}

}

die superklasse (ModelListData) soll methoden wie newData, deleteData und updateData zur verfügung stellen....Wrapper.Model hat 4 weitere konkrete subklassen. diese subklassen sollen die methoden der superklasse aufrufen können, da ich aber in der superklasse nicht konkret sagen kann welches Wrapper.Model ich verwende, bringt die methode newData(Wrapper.Model model) einen fehler....wie kann das gelöst werden, ohne die vererbungshierarchie zu ändern???

gruß patrick
 
ca so:
Java:
public class ModelListData<T> extends AbstractModel<T extends Wrapper.Mode> {
    
    private List<T> list;

    public void newData(T model) {
        list.add(model); //Compiler Fehler
    }
 
danke für die schnelle antwort....könntest du es ir kurz erklären? was bedeutet ModelListData<T> und List<T>?

gruß patrick
 
Das bedeutet, dass man beim Erstellen eines ModelListData-Objektes angibt, was für ein Typ in der Liste liegen wird (und DASS er in der Liste liegen wird, wird durch das List<T> deutlich gemacht)
Java:
ModelListData<SomeType> m = new ModelListData<SomeType>();

SomeType someType = new SomeType();
m.addData(someType); // Geht

SomeWrongType someWrongType = new SomeWrongType();
m.addData(someWrongType); // Geht nicht

Das "T" steht dabei als Platzhalter für den ganz konkreten, genau definierten Typ (in diesem Fall 'SomeType')
 

Zurück
Oben