Java 应为JSON方法中的表达式
我不知道为什么我不能将t作为参数放在fromJson方法中Java 应为JSON方法中的表达式,java,android,Java,Android,我不知道为什么我不能将t作为参数放在fromJson方法中 public class AbstractResponseListener<T> implements Response.Listener<String> { @Override public void onResponse(String response) { Gson gson = new Gson(); T abstractObject = gson.from
public class AbstractResponseListener<T> implements Response.Listener<String> {
@Override
public void onResponse(String response) {
Gson gson = new Gson();
T abstractObject = gson.fromJson(response, T);
}
}
公共类AbstractResponseListener实现Response.Listener{
@凌驾
公共void onResponse(字符串响应){
Gson Gson=新的Gson();
T abstractObject=gson.fromJson(响应,T);
}
}
在Java中,“传递类型”的唯一方法是传递其对象
有几个问题不允许您将T
作为参数传递给方法:
T
是类型,而不是对象,因此不能作为参数传递(或存储到实际上相同的变量中)
T
(实际类型)的实际“值”仅在期间可用(并且编译器执行类型检查并用类型转换修饰某些调用),但类型信息从编译代码中删除,在中不可用
现在,当你知道为什么你不能做你正在尝试做的事情)时,你应该考虑你真正想要达到的目标。也许你是:)的受害者,因为。此外,该方法需要一个
字符串
和一个类
-对象T
不是Class
-对象。T
是一种类型。您也不能将对象
或字符串
或任何内容用作fromJson
方法的参数。它需要一个类对象!在此代码段中,类型参数T
没有任何意义。你没有用它做任何事!你是说类AbstractResponseListener实现Response.Listener
和字符串abstractObject=gson.fromJson(Response,String.class)
?
public <T> T fromJson(JsonElement json, java.lang.Class<T> classOfT) throws JsonSyntaxException
gson.fromJson(response, String.class);
gson.fromJson(response, response.getClass());