Konvertierung einer Zeichenfolge in ein generischer Typ
Mein Programm hat zum erhalten von Eingaben von einer Datei, die Eingabe Zeichen, Ganzzahlen oder Zeichen. Ich habe mit diesem erstellen Sie eine Struktur aus den Elementen in der Datei. Die Art der Eingabe ist am Beginn der Datei. Mein problem ist, dass meine insertNode Funktion erhält das element als generischen Typ T, aber die Datei wird gelesen als Strings. Wie kann ich konvertieren Sie die Zeichenfolge in den Typ T?
Versucht zu kompilieren mit:
String element = br.readLine();
T elem = (T)element;
Ergebnisse im kompilieren-Fehler:
"gefunden : java.lang.String benötigt:
T "
- Bitte zeigen Sie uns, wie Sie rufen die
insertNode
Methode. - Wo ist
T
definiert?T
selbst ist nicht eine Art...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssten Sie die Möglichkeit haben erstellen eine Instanz von
T
, basierend auf einerString
(oder gleichwertig, konvertieren von einemString
zu einemT
).Casting nicht tun, was Sie vielleicht denken, es nicht in diesem Fall. Alle ein cast macht, sagen Sie dem system, "ich weiß, dass Sie eine andere, weniger konkrete Vorstellung davon, welcher Klasse das Objekt ist, aber ich sage Ihnen, dass es ein
Foo
. Gehen Sie vor, prüfen Sie die run-time-Klasse und sehen, dass ich Recht habe!". In diesem Fall ist aber der String ist nicht unbedingt einT
, das ist der Grund, warum der cast fehlschlägt. Casting nicht konvertieren, lediglich disambiguates.Insbesondere, wenn
T
passiertInteger
in diesem Fall würden Sie brauchen, um konvertieren den String in einen Integer durch den AufrufInteger.parseInt(element)
. Allerdings ist der Teil von dem code, den Sie kopiert haben, nicht wissen, wasT
sein wird, wenn es aufgerufen wird, und kann nicht ausgeführt werden diese Konvertierungen selbst. Daher würden Sie brauchen, um passieren in einigen parametriert helper object, um die Konvertierung für Sie, so etwas wie die folgenden: