これは、Eclipse を使用して find をコンパイルします。
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>