如何让集合映射方法返回与输入同类型的泛型Collection?
泛型集合映射方法实现疑问
我需要实现一个集合映射方法:接收Collection<A>类型参数,返回同类型的Collection<B>(比如输入Set<A>就返回Set<B>,且编译器能正确推导返回类型)。尝试了几种泛型写法都无法实现:
- 写法1(不生效):
public <C extends Collection> C<B> aToB(C<A> coll) {} - 写法2(无法保证类型一致,编译器报错):
public <C extends Collection<A>, D extends Collection<B>> D aToB(C coll) {}
我知道可以通过多个重载方法分别适配不同集合类型,但想知道有没有统一的实现方式。另外,我不清楚下面这段代码为何编译报错,提示“需要C类型却提供了List”:
public <C extends Collection<String>> C aaa() { List<String> a = List.of("AAA"); return a; }
内容的提问来源于stack exchange,提问作者elcye
相关产品推荐
相关产品推荐

