我有类实现了多个具有相同默认默认方法的接口。我想知道如何从所有接口组合默认方法。例如:
interface IA {
default void doA() {}
default void process() {
// do something
}
}
interface IB {
default void doB() {}
default void process() {
// do something
}
}
interface IC {
default void doC() {}
default void process() {
// do something
}
}
// other similar interfaces
....
class MyClass implements IA, IB, IC, ... {
public void process() {
// question: how to avoid iterate all the interfaces?
IA.super.process();
IB.super.process();
IC.super.process();
...
}
}
class AnotherClass implements IA, ID, IF, IH, ... {
public void process() {
IA.super.process();
ID.super.process();
IF.super.process();
IH.super.process();
...
}
}
在实现中,该方法只是process()
从所有接口合成。但是我必须明确地调用IA.super.process()
, 。如果接口列表很长,把它们都写出来是很痛苦的。此外,我可能有不同的类来实现不同的接口组合。是否有其他语法糖/设计模式/库可以让我自动完成?IB.super.process()
IC.super.process()
更新:与复合模式比较
复合图案也相当可观。但是我想使用默认方法作为 mixin 来为类提供不同的行为,而复合模式在这里没有给我静态类型检查。复合模式还引入了额外的内存占用。