这段代码在Eclipse中编译顺利:
abstract class CollectionView implements Collection<Object> {
...
public Object[] toArray(Object[] o) {
if (fast) {
return get(map).toArray(o);
} else {
synchronized (map) {
return get(map).toArray(o);
}
}
}
...
}
class KeySet extends CollectionView implements Set<Object> {
protected Collection<Object> get(Map<Object, Object> map) {
return map.keySet();
}
protected Object iteratorNext(Map.Entry entry) {
return entry.getKey();
}
}
但是在使用Ant编译时无法通过:
错误:KeySet不是抽象的,并且没有覆盖Set中的抽象方法toArray(T[])
我可以理解为什么在Eclipse中代码可以编译:因为KeySet已经从CollectionView继承了实现toArray(T[]) 方法的实现。
但是为什么使用Ant编译会失败呢?
<javac srcdir="src" destdir="bin" debug="on">
<compilerarg value="-Xlint:unchecked"/>
<compilerarg value="-Xlint:deprecation"/>
</javac>
toArray()
方法? - Ted Hopp@Override
是否有任何影响? - Joop Eggen