我希望返回类型参数是类型参数和方法参数类型参数的超级。
编译:
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);
但是那些当然没有编译。
这有两个目的:
答案 0 :(得分:1)
我认为您必须在类级别命名类型参数:
import java.util.List;
interface Foo<Base, A extends Base> {
<B extends Base> List<Base> eg1(List<B> unit);
<R> List<R> eg2(List<? extends R> unit);
}
答案 1 :(得分:0)
感谢@LouisWasserman的评论,我开始考虑我应该首先实现的实现。某处必须指定要构造的类型才能返回。在方法实现中硬编码,指定为类型参数,param类型参数等。无论在何种规范中,都可以正确地为此接口方法定义泛型。
换句话说,我试图做的事情毫无意义,因为你无法构造返回类型。