Hi, Ich habe eine Frage zu generics.
Hier mal ein Beispiel der Generic Klasse.
Nun gibt es Mehrere Klassen (A,B,C...) die das interface(I) implementieren.
Diese Klassen beinhalten unterschiedliche Objekte vom Typ VariableValue<T>
In einer weiteren Klasse (KLASSE_XX) sollen diese Variablen gelesen UND gesetzt werden.
KLASSE_XX kennt aber nur das Interface(I) und weiss nicht welche variablen welchen Typ besitzen.
Es sollte also selbst wissen was es speichern muss.
Fage ist nun, wie kann ich in der KLASSE_XX den Typ der VariableValue Objekte herausfinden um ihn korrekt zu setzen??
könnte lauter instanceof abfragen reinhauen aber das scheint mir sehr provisorisch.
Jemand ne Idee?
Ich hoffe das meine Frage verständlich ist, ist etwas schwer zu erklären.
Hier mal ein Beispiel der Generic Klasse.
Java:
public class VariableValue<T>
{
private T variable;
public VariableValue(T variable)
{
this.variable=variable;
}
public void setVariable(T variable)
{
this.variable = variable;
}
public T getVariable()
{
return variable;
}
}
Nun gibt es Mehrere Klassen (A,B,C...) die das interface(I) implementieren.
Diese Klassen beinhalten unterschiedliche Objekte vom Typ VariableValue<T>
Java:
// BEISPIEL Klasse_A
//...
VariableValue<String> numOfClasses2 = new VariableValue<String>("hallo");
//...
//...
// BEISPIEL Klasse_B
VariableValue<Double> tmp2 = new VariableValue<Double>(2.8);
In einer weiteren Klasse (KLASSE_XX) sollen diese Variablen gelesen UND gesetzt werden.
KLASSE_XX kennt aber nur das Interface(I) und weiss nicht welche variablen welchen Typ besitzen.
Es sollte also selbst wissen was es speichern muss.
Java:
// KLASSE_XX
//...
I obj1; // Angenommen: Es wurde irgendwo ein Objekt der KLasse_A erstellt und hier zugewiesen.
//...
VariableValue var1 = obj1.getVariable(); // hier weiss ich den Typ nicht.
var1.setVariable("ldld"); // HIER MUSS ICH DEN TYP KENNEN
Fage ist nun, wie kann ich in der KLASSE_XX den Typ der VariableValue Objekte herausfinden um ihn korrekt zu setzen??
könnte lauter instanceof abfragen reinhauen aber das scheint mir sehr provisorisch.
Jemand ne Idee?
Ich hoffe das meine Frage verständlich ist, ist etwas schwer zu erklären.