我希望返回类型参数是类型参数和方法参数的类型参数的超级参数。
这编译:
import java.util.List;
interface Foo<A> {
<R, B extends R> List<R> eg1(List<B> unit);
<R> List<R> eg2(List<? extends R> unit);
}
但它并不强制 R 也必须是 A 的超级。我怎么做?
实际上,我想做一些类似这些表达的事情:
<B, R super A & B> List<R> func(List<B> unit);
<B> List<? super A & B> func(List<B> unit);
但是这些当然不能编译。
这样做有两个目的:
- 我希望能够将结果分配给 A 和 B 的任何超类。
- 在此方法的实现中,我需要一个可以同时包含 A 和 B 的结果类型。所以第一个编译的例子是行不通的,因为它们不允许我在结果中加上 A。