我有以下方法签名,如何将其转换为模板。
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;
}
答案 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;
}