我有一个这样的界面:
public interface Foobar
{
default void foo( Bar bar )
{
foo( bar, 1 );
}
default void foo( Bar bar, int n )
{
for ( int i = 0; i < n; i++ )
{
foo( bar );
}
}
}
一开始我以为这样就可以了:
default void foo( byte[] b )
{
foo( b, 0, b.length );
}
void foo( byte[] b, int off, int len );
我的问题是我想执行foo
一次或n
多次。任何实现类都可以覆盖其中之一或两者。(第二种方法存在于性能关键系统中的批处理目的)
但似乎我的解决方案使用default
的不是很好的风格,因为可以不覆盖它们并且调用任何一个都会导致无限循环(并最终导致 StackOverflow)。
所以,我的问题是:什么是好的 OOP 风格折衷方案?