interface Foo {
void doSomething();
void doSomethingElse();
}
class MyClass implements Foo {
public void doSomething() {
/* All of my code goes here */
}
public void doSomethingElse() {
// I leave this unimplemented
}
}
现在我没有实现 doSomethingElse(),留给我的子类去实现它,这是可选的。
class SubClass extends MyClass {
@Override
public void doSomethingElse() {
// Here's my implementation.
}
}
public class Foo {
public interface Callback {
public void requiredMethod1();
public void requiredMethod2();
}
public interface CallbackExtended extends Callback {
public void optionalMethod1();
public void optionalMethod2();
}
private Callback mCallback;
}
public interface List<E> {
:
:
default public boolean add(E element) {
throw new UnsupportedOperationException();
}
:
:
}
这样,如果实现类没有提供它自己的新行为,那么“可选”方法 add()具有抛出 Unsupport tedOperationException 的默认行为,这正是您希望发生的,并且符合 List 的契约。如果作者编写的类不允许将新元素添加到 List 实现中,则 add()的实现是可选的,因为默认行为正是所需的。