Hallo Zusammen,
ich habe eine eigene Liste erstellt (Klassen Link für Listenelemente, Liste für Listenverwaltung, und ein Hauptprogramm zum Anlegen diverser Listen)
Dafür habe ich Templates/Generics genutzt, d.h. die Klasse wie folgt definiert:
Link<T>
Nun habe ich in meine Listenverwaltung eine Methode implementiert um bestimmte Werte/Daten innerhalb der Liste zu finden und diese Werte zu löschen, bzw. zu ersetzen.
Das Problem ist jetzt: Ich möchte die Nutzdaten ersetzen, falls <T> eine Integer-Liste sein sollte zum Beispiel Wert 0, bei String entsprechend "leer" oder "". Ich weiß bereits wie ich den Klassentypen herausfinde, jedoch warnt mich der Compiler trotz instanceof Abfrage beim setzen neuer Werte.
Kleiner Auszug:
private T daten;
public void setDaten(T daten)
{
this.daten = daten;
}
Wenn ich nun aber in der Listenverwaltung folgendes mache:
Listenelement.setDaten(0); oder Listenelement.setDaten("");
erscheint der Fehler:
incompatible Types, cannot convert int/String into Type T
T extends objects declared in Class List
Wie weise ich hier zuverlässig String oder Integer nach Instanceof Prüfung zu?
Eine Zuweisung Listenelement.setDaten(null) wäre möglich, führt aber wieder zu anderen Problemen, von daher möchte ich das schon speziell machen.
Vielen Dank im Voraus,
Gruß
vault
ich habe eine eigene Liste erstellt (Klassen Link für Listenelemente, Liste für Listenverwaltung, und ein Hauptprogramm zum Anlegen diverser Listen)
Dafür habe ich Templates/Generics genutzt, d.h. die Klasse wie folgt definiert:
Link<T>
Nun habe ich in meine Listenverwaltung eine Methode implementiert um bestimmte Werte/Daten innerhalb der Liste zu finden und diese Werte zu löschen, bzw. zu ersetzen.
Das Problem ist jetzt: Ich möchte die Nutzdaten ersetzen, falls <T> eine Integer-Liste sein sollte zum Beispiel Wert 0, bei String entsprechend "leer" oder "". Ich weiß bereits wie ich den Klassentypen herausfinde, jedoch warnt mich der Compiler trotz instanceof Abfrage beim setzen neuer Werte.
Kleiner Auszug:
private T daten;
public void setDaten(T daten)
{
this.daten = daten;
}
Wenn ich nun aber in der Listenverwaltung folgendes mache:
Listenelement.setDaten(0); oder Listenelement.setDaten("");
erscheint der Fehler:
incompatible Types, cannot convert int/String into Type T
T extends objects declared in Class List
Wie weise ich hier zuverlässig String oder Integer nach Instanceof Prüfung zu?
Eine Zuweisung Listenelement.setDaten(null) wäre möglich, führt aber wieder zu anderen Problemen, von daher möchte ich das schon speziell machen.
Vielen Dank im Voraus,
Gruß
vault
Zuletzt bearbeitet: