如何使用两个泛型获取参数化类型的类实例

时间:2019-09-03 20:57:40

标签: java generics

我有:

public class RestClientResource<T,U> {
}

并想要确定U的班级。

我有这个:

Class<U> uClass = 
(Class<U>) ((ParameterizedType)getClass().getGenericSuperclass()).getActualTypeArguments()[0];

但是它不起作用,大概是因为我有多个通用的参数化类型

如何使它正常工作?

1 个答案:

答案 0 :(得分:3)

  

但是它不起作用,大概是因为我有多个泛型参数化类型

这应该不是问题。

有两件事跳出来:

  1. 您实际上需要有一个泛型超类:

    getClass().getGenericSuperclass()
    

    设置您的班级abstract,以使其成为 的子类:

    public abstract class RestClientResource<T,U> {
    
  2. 如果要使用U类,请访问数组的第[1]个元素:

    ....getActualTypeArguments()[1]
    

    否则,您将获得T