我如何告诉fromJson方法我需要返回T类型的对象? 我知道T.class是不可能的。
@Override
public T getById(String id) {
File json = new File(folder, id);
JsonReader reader = null;
try {
reader = new JsonReader(new FileReader(json.getPath()));
return gson.fromJson(reader, T.class);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
try {
reader.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return null;
答案 0 :(得分:1)
由于compile time type erasure您的通用参数<T>
在运行时不存在。正确指出,由于没有T.class
,您无法T
。
为了做你想做的事,你需要请求一个与你的类型参数对应的Class
对象的实例传递给方法:
public <T> T getById(final String id, final Class<T> type) {
这样你可以使用type
变量传递给Gson方法
return gson.fromJson(reader, type);
答案 1 :(得分:0)
最终我做了通常的技巧(事实证明)。
public class GenericClass<T> {
private final Class<T> type;
public GenericClass(Class<T> type) {
this.type = type;
}
public Class<T> getMyType() {
return this.type;
}
}