Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 应为JSON方法中的表达式_Java_Android - Fatal编程技术网

Java 应为JSON方法中的表达式

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

我不知道为什么我不能将t作为参数放在fromJson方法中

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
    是类型,而不是对象,因此不能作为参数传递(或存储到实际上相同的变量中)

  • 即使前面的问题不存在,泛型的Java实现在一种称为。简言之,这意味着
    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());