java中的Class <t []>的实例,以便在json解析器中使用</t []>

时间:2013-06-28 08:41:52

标签: java android json gson

我正在使用json google库。我们可以这样:

Public Class JsonParsing<T> {   

     private Gson gson;

     public JsonParsing(GsonBuilder builder) {
         this.gson = builder.create();
     }

     public T[] fromJsonFromArray(String json, Class<T[]> classOfT) {
         return gson.fromJson(json, classOfT);
     }
}

我们如何创建Class<T[]>的实例以传递给此方法?

补遗:

我尝试创建一个通用方法:

    public <T> T[] fromJsonFromArray(String json) {
        final Type type = new TypeToken<T[]>(){}.getType();
        return gson.fromJson(json, classOfT);
    }

似乎我不能以T[]作为回报。那么如何用json格式解析数据数组呢? 注意:可以以非通用方式执行此操作。 我们不能有任何通用的解决方案吗?

2 个答案:

答案 0 :(得分:2)

您可以将方法更改为:

public T fromJsonFromArray(String json, Class<T> classOfT) {
    return gson.fromJson(json, classOfT);
}

并将其称为(例如):

fromJsonFromArray(someString, new Byte[0].getClass());

注意:我觉得这可能是一个通用的方法,如下所示:

public <T> T fromJsonFromArray(String json, Class<T> classOfT) {
    return gson.fromJson(json, classOfT);
}

如果你依赖于封闭类型的类型参数(你的第一个例子就是这样),我看不到采用classOfT参数的目的。

答案 1 :(得分:2)

尝试使用TokenType

喜欢什么?

Type yourType = new TypeToken<YourClass[]>() {}.getType();