Java泛型返回参数中类型的子集合

Java泛型返回参数中类型的子集合,java,generics,Java,Generics,T:a型 C:集合的子类型 R:T和C联合的回归 示例: T=堆栈溢出。类 C=列表类 R=列表 如何在方法签名中表达 应该这样写吗 <T, <C extends Collection>, R extends C<T>> HttpResponse<R> process(Class<T> returnType, Class<C> parametrizedReturnType) HttpResponse 流程(类return

T:a型
C:集合的子类型
R:T和C联合的回归

示例:
T=堆栈溢出。类
C=列表类
R=
列表

如何在方法签名中表达

应该这样写吗

<T, <C extends Collection>, R extends C<T>> HttpResponse<R> 
process(Class<T> returnType, Class<C> parametrizedReturnType)
HttpResponse
流程(类returnType、类ParameterizedReturnType)
我知道
C
不起作用

为了做

List<StackOverflow> res = process(StackOverflow.class, List.class)
List res=process(StackOverflow.class,List.class)

有什么想法吗?

为了避免原始类型(等)的问题,您可以传入类似“原型”对象的内容:


什么是“联合”,什么是“交换”?
<T, C extends Collection<T>> HttpResponse<C> process(C prototype) {
  ...
}
HttpResponse<List<String>> response = process(new ArrayList<>());
<T, C extends Collection<T>> HttpResponse<C> process(Supplier<C> supplier) {
  return new HttpResponse<>(supplier.get());
}

HttpResponse<List<String>> response = process(ArrayList::new);