【发布时间】:2021-03-16 10:40:33
【问题描述】:
我正在尝试使用泛型并通过 Gson,尝试反序列化为类型 T。以下是我的代码。
public class Test<T> {
private final Subscriber<T> subscriber;
Gson gson = new Gson();
public interface Subscriber<T> {
public void onMessage(T message);
}
public Test(Subscriber<T> subscriber) {
this.subscriber = subscriber;
}
public void onResponse(CharSequence data) {
T responseObj = gson.fromJson(data.toString(), <how to get type of T here>);
subscriber.onMessage(responseObj);
}
}
正如上面方法onResponse中的代码中提到的,我怎样才能反序列化为T类型的对象?我知道我们可以在构造函数中传递类型并可能使用它。但是还有其他更清洁的方法吗?如果没有,我宁愿把它留给订阅者,不要在这里使用泛型。
有什么想法吗?谢谢
【问题讨论】:
-
我不知道 Gson,但我认为第二个参数的类型是
Class<T>。假设您只期望T有一个具体类,您也可以将其传递给构造函数并存储它:Test(Subscriber<T> subscriber, Class<T> type)。
标签: java generics gson deserialization