Generics: List mit verschiedenen Typen...

RoCMe

Erfahrenes Mitglied
Hey!

Mir ist klar, dass ich mich gerade anstelle wie ein absoluter Anfänger, aber irgendwie kriege ich den Knoten selbst nicht zum Platzen :-/

Folgende Situation: Ich habe die folgende Klasse, die im Prinzip nur

Java:
public class ConfigParameter<T> {
	
	private T value;
	
	public ConfigParameter(T myType) {
		this.myValue = myType;
	}
	
	public T getValue() {
		return myValue;
	}
}

Jetzt kann ich ein ConfigParameter<Boolean> erzeugen und bekomme auch einen boolean zurück - sehr schön.

Jetzt mein Problem: Ich habe eine List<ConfigParameter<?>>, die verschiedene der oben definierten ConfigParameter<T> enthält. Und jetzt bekomme ich kein boolean, String, oder Double mehr, sondern nur noch Objects... Muss ich wirklich casten (ich kanns mir nicht vorstellen...), oder sehe ich gerade den Wald vor Bäumen nicht? :-/

Sorry, ich denke das ist ziemlich billig, aber ich sehe es nicht...

Gruß,

RoCMe
 

zeja

Erfahrenes Mitglied
Ja, du müßtest das entsprechend casten. Denk aber bitte beim API-Design daran, nirgendwo in einem Rückgabewert ein ? zu haben. Das ist ein wenig unschön.

Die Frage ist nun, ob es wirklich geschickt ist, eine generische Klasse zu verwenden, wenn du dann aber eine eine gemeinsame Liste unterschiedliche Typen reinstecken willst. Kannst du die Listen nicht aufteilen?
 

RoCMe

Erfahrenes Mitglied
Ja, theoretisch könnte ich die Liste aufteilen, aber das würde wahrscheinlich sehr umständlich.

Ich versuche zur Zeit, einen Konfiogurationsmanager zu schreiben. Dabei soll es eine Methode
Java:
create(ConfigParameter<?> myParams)
geben, die anhand der übergebenen Parameter eine neue Konfiguration enthält.

(Anmerkung: Die oben beschriebene Klasse enthält ein weiteres Feld 'name' vom Typ String, die das Attribut identifiziert).

Wenn ich jetzt für jeden möglichen Datentyp eine eigene Liste übergebe, ändert sich diese Methode jedes Mal, wenn ich einen neuen Datentyp integrieren möchte... Irgendwie unschön, oder nicht.

Ich hoffe, es ist klar was ich tun will... :-(

Gruß,

RoCMe
 

zeja

Erfahrenes Mitglied
Hmm ja aber solltest du nicht alles so weit kapseln, dass du den eigentlichen Datentypen nur wissen musst, wenn du den Wert aus den Einstellungen tatsächlich haben willst. Der Rest sollte über entsprechende Interfaces für die Datentypen gekapselt sein. Daher ist die Frage ob der Generische Typ hier überhaupt sinnvoll oder nötig ist.