将方法转换为泛型

时间:2012-06-24 16:46:21

标签: java

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

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;
}

2 个答案:

答案 0 :(得分: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;
    }
}

答案 1 :(得分:0)

如果您认为T型将始终具有某种超级类别,您可以parametrize这种方式 例如:。 <T extends JSONContainer>

public static <T> T  getMappedRootObject(T clazz,String fileName){
    /**
     * ...
     * */
    T container = new Gson().fromJson(br, clazz.getClass());
    return container;
}