Dies kompiliert mit Eclipse finden:Wie kommt Eclipse kompiliert diesen Java-Code, aber nicht Ant?
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();
}
}
aber es funktioniert nicht kompilieren, wenn Ant mit:
error: KeySet is not abstract and does not override abstract method toArray(T[]) in Set
ich sehen kann, warum sollte der Code mit Eclipse kompilieren: KeySet bereits die Umsetzung des toArray erbt (T []) Methode aus CollectionView.
Aber warum schlägt es fehl, wenn ich mit Ant kompiliere?
<javac srcdir="src" destdir="bin" debug="on">
<compilerarg value="-Xlint:unchecked"/>
<compilerarg value="-Xlint:deprecation"/>
</javac>
Das ist ein schwieriger. Es muss Unterschiede in den Abhängigkeiten oder der Reihenfolge der Abhängigkeiten geben? – djangofan
nicht sicher. aber beide Klassen sind innere Klassen derselben Klasse. –
Implementiert die einschließende Klasse 'toArray()'? –