String-Typ in einen generischen Typ T umwandeln

javalerner86

Mitglied
Hallo zusammen,

Java:
T element;
public T functions(){
 String elementStr = element.toString();
 /*i-was mit elementStr machen und dann*/
/*und nun möchte ich elementStr wieder in einen T-Typen zurückumwandeln, da die Vorgabe die Rückgabe eines T-Typs beinhaltet. Wie macht man das?*/
}

Oder gibt es elementare Lücken in meinem Wissen um generische Typen? Vielen Dank für die Antworten=)
 
Hi,

eine (hässliche) Lösung wäre mit instanceof den Typ von T rauszufinden und
dann den String in den entsprechenden Typen umzuwandeln (xy.valueOf(String input)).
 
Du weißt nicht, was T ist: Es kann ein Date sein, ein Thread, ein DES-verschlüsselter InputStream oder sonstwas. Da alle Objekte die toString-Methode implementieren, bekommst du auch immer eine String-Repräsentation zurück, mal aussagekrüftiger (wie bei Date) und mal weniger aussagekräftiger (wie bei Thread). Welche sinnvolle Operation willst du auf String anwenden, deren Ergebnis für alle möglichen Typen "zurückverwandelbar" ist? Und wenn du von vornherein irgendwelche Annahmen über T machen kannst (also doch weißt, was da ankommt), warum machst du dann die Klasse dann erst generisch? Kurz gesagt, hört sich nach einem Designfehler an.
 
irgendwie verstehe ich dein Problem nicht. Du hast [c]elementStr[/c] und [c]element[/c]. Und möchtest elementStr zurückwandeln ... in was? elementStr war doch schon immer ein String. Und element ist weiterhin T. Du hast hier nichts gewandelt in dem Sinne.

OK, mal angenommen, dein Beispiel ist nur etwas schlecht. Vielleicht hilft dir dieser Tipp: [c]<T extends MeinObject>[/c]. Das würde vorraussetzen, dass du festlegen kannst, dass nicht [c]Object[/c] die Oberklasse aller T's ist, sondern dein eigenes [c]MeinObject[/c]. Somit könntest du in MeinObject (von denen dann alle T's geerbt haben müssen) dir auch Methoden zur Umwandlung, Generierung ..... schreiben kannst.
 
Zuletzt bearbeitet:
Hab ich das richtig verstanden, du willst auf Basis der String-Representation eines Objektes das Objekt selbst verändern? Das geht natürlich erstmal nicht, du kannst nur ein neues Objekt des selben Typs anlegen. Du könntest alle Änderungen, die du an
Code:
elemenStr
machst, an ein neues Objekt vom Typ
Code:
T
übergeben (mittels eines Konstruktors oder einer Factory). Aber wie du dort die Änderungen übernehmen willst, musst du seöbst wissen...
 
Java:
T element;
public T functions(){
 String elementStr = element.toString();
 /*i-was mit elementStr machen und dann*/
  return element;
}
😀
 
Code:
element.clone()
vielleicht *schmunzelt*

Das ist aber alles nicht zielführend. Besser wäre zu erfahren, was der Zweck des ganzen ist.
 

Zurück
Oben