Hallo zusammen,
ich möchte mir eine Klasse bereitstellen, die das speichern und laden von JSON - Dateien vereinfacht.
Beim Laden aus einer JSON Datei muss ich jedoch den Type der Klasse
angeben, damit dieses auch deserialisiert werden kann.
Aktueller Stand der Klasse
Nur stört mich an dieser Stelle, dass ich in der Methode
noch extra die
mitgeben muss, damit die Methode
passend aufgerufen werden kann.
Meine Frage
Gibt es eine Möglichkeit, den Parameter, den ich der Methode read als Parameter mitgeben, über den Wildcard Type T zu bekommen, oder ist das so, wie ich es mir vorstelle nicht möglich?
ich möchte mir eine Klasse bereitstellen, die das speichern und laden von JSON - Dateien vereinfacht.
Beim Laden aus einer JSON Datei muss ich jedoch den Type der Klasse
Java:
Class<?> classOfT
Aktueller Stand der Klasse
Java:
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import com.google.gson.Gson;
public class GsonObjectReader<T> {
private final String path;
public GsonObjectReader(final String path) {
this.path = path;
}
public T read(Class<T> classId) {
T t = null;
try (BufferedReader reader = new BufferedReader(new FileReader(path))) {
t = (T) new Gson().fromJson(reader, classId);
} catch (IOException e) {
e.printStackTrace();
}
return t;
}
}
Nur stört mich an dieser Stelle, dass ich in der Methode
Java:
read(...)
Java:
Class<T>
Java:
fromJson
Meine Frage
Gibt es eine Möglichkeit, den Parameter, den ich der Methode read als Parameter mitgeben, über den Wildcard Type T zu bekommen, oder ist das so, wie ich es mir vorstelle nicht möglich?