创建GenericType <list>但列表条目类型可用作GenericType本身

时间:2016-10-10 10:32:49

标签: java json generics java-7 generic-programming

通过提供代码示例可以最好地解释这个Java问题:

void  <T extends A> process(GenericType<T> listEntryType)
{
    // ...
    deserializeJson(data, new GenericType<List</* listEntryType */>>);
    // ...
}

正如您所看到的,我正在尝试为GenericType创建List - 对象,但列表的条目类型仅作为GenericType提供本身。但是我怎样才能做到这一点?我不知道该示例中的/* listEntryType */必须被替换。

这是我实际问题的简化。以下是一些有关实际问题的信息,对于那些感兴趣的人:

实际上,该对象不包含在List中,而是包含在Map中。您可以看到T必须扩展类A。这意味着:

process()的来电者只知道他想要处理TlistEntryType)类型的数据,但他不知道包含的数据的结构这个对象。

方法process()知道数据的结构并知道A的子类实例的确切位置,但不知道它的具体类型。

我知道我可以通过将process()的参数更改为GenericType<List<T>>来轻松解决问题,但我不希望调用者知道数据的结构。

0 个答案:

没有答案