Ich versuche eine generische Methode zum Deserialisieren von JSON in mein Modell zu schreiben. Mein Problem ist, dass ich nicht weiß, wie man Klasse vom allgemeinen Typ T erhält. Mein Code sieht ungefähr so aus (und kompiliert nicht auf diese Weise)
%Vor% Ich habe versucht, etwas anderes, um den Typ zu bekommen, aber es wirft einen Fehler Ich hatte die Klasse als JsonHelper<T>
und dann versuchte dies
Die Methodensignatur sieht so aus
%Vor% Also, wie kann ich entlang T übersetzen, so dass, wenn ich JsonHelper.Deserialize<MyObject>(json);
rufe, ich eine Instanz des korrekten Objekts bekomme?
Sie müssen eine Class
Instanz von irgendwo bekommen. Das heißt, Ihre Methode Deserialize()
muss einen Class<T>
als Parameter verwenden, genau wie die zugrunde liegende Methode fromJson()
.
Ihre Methodensignatur sollte wie Gson aussehen:
%Vor%Ihre Anrufe werden wie folgt aussehen:
%Vor%Übrigens ist die Konvention, Methodennamen mit einem Kleinbuchstaben zu beginnen, in Java gut etabliert.
Unglücklicherweise, so wie Java mit Generika umgeht, können Sie die Klasse nicht so bekommen, wie Sie es wünschen. Aus diesem Grund fragt Google nach der Klasse als Argument. Sie müssen Ihre Methodensignatur ändern, um das Gleiche zu tun.