获取泛型类的类类型

时间:2015-08-26 13:17:33

标签: java

我有以下方法,我试图使用一个通用的类:

public static <T> T fromJson(String serializedJson, Class<T> theClazz);

我想反序列化一个看起来像这样的类:

public class JsonContentWrapper<T> {
    private String version;
    private T content;
}

我通常使用fromJson方法的方式如下:

JsonUtil.fromJson(someJsonString, JsonContentWrapper.class)

但是,由于JsonContentWrapper具有该通用对象content,我真的希望能够做到:

JsonUtil.fromJson(someJsonString, JsonContentWrapper<SomeClass>.class)

但这并不奏效。有没有办法获得泛型类及其使用的泛型?我尝试了this之类的东西,但没有多少运气。

就目前而言,至少在我测试的对象中,T对象被反序列化为LinkedHashMap,这是错误的。

1 个答案:

答案 0 :(得分:2)

Java使用Erasure实现泛型。这意味着在运行时,JVM无法知道哪些类型与Generic类/方法/对象/无关。可以使用hacks和变通方法来尝试使用它,但这是该语言的基本部分。

鉴于您正在使用JSON,您可能希望调查该库是否具有专用于通用数据结构的函数。我碰巧知道GSON has functions specific to handling Generic data structures

这个事实