我想創(chuàng)建一個(gè)這樣的界面public interface MyInterface<T extends OtherInterface<K>>{ K doSomething(T o);}但編譯器不會識別它。另一種方法是:public interface MyInterface<T extends OtherInterface<K>,K>{ K doSomething(T o);}我的問題是,雖然第二個(gè)代碼有效,但有沒有像第一個(gè)代碼那樣的方法,所以我不必放兩種類型來宣布接口?
1 回答

胡說叔叔
TA貢獻(xiàn)1804條經(jīng)驗(yàn) 獲得超8個(gè)贊
如果您有一個(gè)帶有兩個(gè)類型參數(shù)的通用接口,那么您需要在類簽名中聲明它們。
或者,如果聲明K為通配符?并僅返回T,您仍然可以將輸出T轉(zhuǎn)換為正確的接口。例如:
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);
}
添加回答
舉報(bào)
0/150
提交
取消