为了账号安全,请及时绑定邮箱和手机立即绑定

有没有办法让一个泛型类型的接口在 Java 中用另一个泛型类型扩展另一个接口?

有没有办法让一个泛型类型的接口在 Java 中用另一个泛型类型扩展另一个接口?

qq_花开花谢_0 2022-06-15 10:43:30
我想创建一个这样的界面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);

}


查看完整回答
反对 回复 2022-06-15
  • 1 回答
  • 0 关注
  • 81 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信