java 传递类型参数_在Java中为通用方法传递类型参数为类型参数的类

论坛 期权论坛 编程之家     
选择匿名的用户   2021-5-31 03:46   74   0

问题总结:

我想传递一个类与类型参数(例如ArrayList< SomeClass>例如)作为类型参数的通用方法。

假设我有一个方法:

public static T getGenericObjectFromJson(String json, Class genericType){

// details unimportant, basically returns an object of specified type

return JsonParser.fromJson(json, genericType);

}

这种方法,当然,将工作完美地为任何类的类。我可以调用这样的方法,例如:

getGenericObjectFromJson(jsonString, User.class)

问题:我发现我不能这样做:

getGenericObjectFromJson(jsonString, ArrayList.class)

在语法上,这显然是无效的。然而,我不知道我会如何完成这样的事情。我可以,当然,传递ArrayList.class,但是通用类型的添加使它不再语法有效,我不能想到一个绕过它的方法。

唯一的直接解决方案是这样的东西(这似乎很愚蠢):

getGenericObjectFromJson(jsonString, new ArrayList().class)

然而,我们最终失去通用类型,只是回到一个未知类型的ArrayList(尽管它可以被转换)。另外,不必要地实例化对象。

我迄今为止唯一的解决方案是将该方法包装在一个类中,该类包含可以实例化的通用类型参数,如下所示:

public class JsonDeserializer...

在这种情况下,getGenericObjectFromJson方法将使用类的泛型类型。

问题:最后,我很好奇为什么我不能传递一个类的类型参数,以及是否有一种方法来完成我试图做的。

一如既往,让我知道如果这个问题有任何问题。

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP