相关疑难解决方法(0)

使用泛型与GSON

我正在使用GSON将JSON解码为类型为T的对象,例如

public T decode(String json) {
    Gson gson = new Gson();
    return gson.fromJson(json, new TypeToken<T>() {}.getType());
}
Run Code Online (Sandbox Code Playgroud)

然而,这会返回一个例外 -

java.lang.AssertionError:意外类型.预期的一个:java.lang.reflect.ParameterizedType,java.lang.reflect.GenericArrayType,但得到:sun.reflect.generics.reflectiveObjects.TypeVariableImpl,用于类型标记:T

我认为通过使用TypeToken,我避免使用Type Erasure.

我错了吗?

谢谢

java generics gson

21
推荐指数
2
解决办法
1万
查看次数

编写一个需要Class.class作为java参数的函数

我想编写一个需要Class.class作为参数的函数

例:

class MyObject{


  public whatTypeGoesHer MyFunction(something1, something2){
//do something with parameters
}

}

class MyObject1{
      MyObject object = new MyObject();

       MyObject1 object2 = object.MyFunction(MyObject1.class,something else);

}
Run Code Online (Sandbox Code Playgroud)

这种类型的invokation是我想要实现的,我如何定义"MyFunction"来接受这种类型的参数?

应该是什么而不是"whatTypeGoesHere"?

编辑:

让我重新解释一下这个问题

  1. 我想使用GSON从JSON反序列化类,但是,我发现自己在每个类中编写完全相同的方法,我希望通过类名的不同来反序列化

这是我的代码:

public static User fromJSON(String json, Class<?> className) {
    GsonBuilder builder = new GsonBuilder();
    builder.serializeNulls();
    User g1 = builder.create();
    User user = g1.fromJson(json, className.getClass());
    return user;
}
Run Code Online (Sandbox Code Playgroud)

和它在使用过的类中的调用

User user =   User.fromJSON(json,User.class);
Run Code Online (Sandbox Code Playgroud)

我想把"fromJSON"方法放到一些utils类中,因为在每个类中它都完全相同,它返回的类名不同

我怎么做?

java generics class

1
推荐指数
1
解决办法
115
查看次数

标签 统计

generics ×2

java ×2

class ×1

gson ×1