Java 8 错误:接口继承抽象和缺省
我正在尝试编写一个集合接口库,这些库使用 Java 8 中新的默认方法语法实现标准集合 API 中的大多数方法。以下是我要做的一个小示例:
public interface MyCollection<E> extends Collection<E> {
@Override default boolean isEmpty() {
return !iterator().hasNext();
}
//provide more default overrides below...
}
public interface MyList<E> extends MyCollection<E>, List<E> {
@Override default Iterator<E>iterator(){
return listIterator();
}
//provide more list-specific default overrides below...
}
但是,即使这个简单示例也会遇到编译器错误:
error: interface MyList<E> inherits abstract and default
for isEmpty() from types MyCollection and List
根据我对默认方法的理解,这应该是允许的,因为只有一个扩展接口提供默认实现,但显然情况并非如此。这是怎么回事?有没有办法让它做我想做的事?