Gson“ fromJson”和'T'

时间:2019-01-01 03:01:02

标签: java

我有一个带有“ T extended StorageClass”的类。您可以扩展该类并在“ T”中放入另一个类,例如“ GroupStorage extended Storage”。在“ Storage”类中有一个名为“ get”的方法。现在我希望该方法将json转换为“ T”类,以我的“ Group”类为例。也许您会了解下面的代码。

public abstract class Storage<T extends StorageClass> {
    // This should return whatever T is.
    public T get(String groupName) {
        T t = null;
        File file = new File(this.groupFolderPath, groupName + ".json");
        if (file.exists()) {
            try {
                FileReader reader = new FileReader(file);
                // 'T.class' is not possible
                t = Storage.GSON.fromJson(reader, T.class);
            } catch (Exception e) {
                e.printStackTrace();
                Bukkit.getLogger().warning("Failed to read " + groupName + ".json!");
            }
        } else {
            Bukkit.getLogger().warning("The group " + groupName + " does not exists!");
        }
        return t;
    }
}

1 个答案:

答案 0 :(得分:0)

您将必须通过以下方式将类的类型传递给您的方法:

public T get(String groupName, Class<T> type)

,然后将其用作:

t = Storage.GSON.fromJson(reader, type);