T:一种类型
C:Collection的子类型
R:T和C的键合的返回
示例:
T = StackOverflow.class
C = List.class
R = List<StackOverflow>
如何在方法签名中使用它?
应该这样写吗?
<T, <C extends Collection>, R extends C<T>> HttpResponse<R>
process(Class<T> returnType, Class<C> parametrizedReturnType)
我知道C<T>
不起作用。
为了做
List<StackOverflow> res = process(StackOverflow.class, List.class)
有什么想法吗?
答案 0 :(得分:3)
为了避免原始类型(等)的问题,您可以传递类似“原型”对象的内容:
skip_before_action :initialize_objects
因此您可以像这样调用它:
<T, C extends Collection<T>> HttpResponse<C> process(C prototype) {
...
}
原型对象的性质取决于您需要在HttpResponse<List<String>> response = process(new ArrayList<>());
方法中对其进行处理。也许您可以接受一个空列表;也许您需要传递实例的供应商,例如:
process