用于实现多个接口的方法返回类型
2022-09-02 13:29:37
是否可以指定一个方法,该方法返回实现两个或多个接口的对象?
假设我们有以下接口:
interface FooBar {
[Foo] & [Bar] getFooBar();
}
interface Foo {
void doFoo();
}
inteface Bar {
void doBar();
}
需要提供方法的实现者,该方法返回一个完全填充的类型实例以及 。FooBar
getFooBar()
Foo
Bar
到目前为止,我尝试的是使用泛型来做:
interface FooBar {
<T extends Foo & Bar> T getFooBar()
}
class SomeImplementor implements FooBar {
private FooAndBarImpl fSomeField;
public <T extends Foo & Bar> T getFooBar() {
return fSomeField;
}
}
鉴于这是框架或库和实现提供的某种类型,我认为这应该有效。但是,它没有,因为“FooAndBarImpl不能转换为T”。为什么?在我看来,所暗示的合同并没有被打破。FooAndBarImpl
Foo
Bar
getFooBar()
另一种解决方案是定义一个扩展的新接口,并将其用作返回类型。我只是认为在实现中返回一个空的包装器没有多大意义。Foo
Bar
fSomeField
getFooBar()
编辑:
如果有人能解释为什么泛型方法不起作用,将不胜感激。我只是没有看到它。