0

我有以下方法签名,如何将其转换为模板。

public static JSONContainer getMappedRootObject(JSONContainer clazz, String filename) {
    ...
    JSONContainer container = new Gson().fromJson(br, JSONContainer.class);
    return container;
}

这是我想出来的,对吗?

public static <T extends Object> T getMappedRootObject(Class<T> clazz, String filename) {
    T container = new Gson().fromJson(br, clazz);
    return container;
}
4

2 回答 2

0

如果在您的 JSONContainer 实现中,“JSONContainer clazz”参数是目标对象的一个​​实例,您可以执行以下操作:

public static <T> T getMappedRootObject(T instance, String filename) {
     //.......

    if (instance == null) {
        // handle this
    } else {
        T container = new Gson().fromJson(br, instance.getClass());
        return container;
    }
}
于 2012-06-24T16:51:56.850 回答
0

如果您认为 Type T 将始终具有某种超类,则可以将其参数化,例如:。<T extends JSONContainer>

public static <T> T  getMappedRootObject(T clazz,String fileName){
    /**
     * ...
     * */
    T container = new Gson().fromJson(br, clazz.getClass());
    return container;
}
于 2012-06-24T17:04:59.767 回答