我想创建一个这样的界面public interface MyInterface<T extends OtherInterface<K>>{ K doSomething(T o);}但编译器不会识别它。另一种方法是:public interface MyInterface<T extends OtherInterface<K>,K>{ K doSomething(T o);}我的问题是,虽然第二个代码有效,但有没有像第一个代码那样的方法,所以我不必放两种类型来宣布接口?
1 回答
胡说叔叔
TA贡献1804条经验 获得超8个赞
如果您有一个带有两个类型参数的通用接口,那么您需要在类签名中声明它们。
或者,如果声明K为通配符?并仅返回T,您仍然可以将输出T转换为正确的接口。例如:
interface Foo<T> { }
interface Bar<T extends Foo<?>>{
T doSomething(T o);
}
class IntegerFoo implements Foo<Integer> {}
...
public static void main(String[] args) {
IntegerFoo integerFoo = new IntegerFoo();
Bar<IntegerFoo> bar = t -> t;
Foo<Integer> result = bar.doSomething(integerFoo);
}
添加回答
举报
0/150
提交
取消