Java类型参数化类参数

时间:2013-07-01 18:51:02

标签: java generics type-parameter

JPA有以下签名方法:

<T> CriteriaQuery<T> createQuery(Class<T> resultClass);

当我的resultClass类型本身是类型参数化时,如何调用此方法?

例如:

public class ResultDto<T> {
...
}

我尝试了以下但是没有用:

createQuery(ResultDto<String>.class);

2 个答案:

答案 0 :(得分:0)

通用类型的任何特定实例化都没有Class个实例(例如ResultDto<String>ResultDto<Integer>ResultDto<MyObject>,...)。

无论该类是否是通用的,总是只有一个Class实例代表该类的原始版本。在您的情况下,它是ResultDto.class

答案 1 :(得分:0)

您可以使用createQuery(ResultDto.class)

原因是当您要创建ResultDto的对象时,您将始终使用type参数创建它 例如  ResultDTo<String> rs = new ResultDTo<String>() 因此,此类型参数将在<T> CriteriaQuery<T> createQuery(Class<T> resultClass);

中考虑