Я вхожу в проект с открытым исходным кодом, в настоящее время построенный с использованием Maven2.Я импортировал проект в Eclipse, и этот фрагмент кода доставляет мне проблемы:
public static enum HierarchyType implements Function<MonetarySummary, SumOfMoney>, Predicate<Txaction> {
EARNINGS {
@Override
public SumOfMoney apply(MonetarySummary summary) {
return summary.getEarnings();
}
@Override
public boolean apply(Txaction txaction) {
return txaction.getAmount().signum() > 0;
}
},
SPENDING {
@Override
public SumOfMoney apply(MonetarySummary summary) {
return summary.getSpending();
}
@Override
public boolean apply(Txaction txaction) {
return txaction.getAmount().signum() < 0;
}
},
NET {
@Override
public SumOfMoney apply(MonetarySummary summary) {
return summary.getNet();
}
@Override
public boolean apply(Txaction txaction) {
return true;
}
}
}
Оба Function
и Predicate
имеют apply
методы (они из общего достояния Google):
public interface Function<F, T> {
T apply(@Nullable F from);
...
}
public interface Predicate<T> {
boolean apply(@Nullable T input);
}
Вот ошибка, которую я получаю, только в Eclipse:
Description Resource Path Location Type
Name clash: The method apply(F) of type Function<F,T> has the same erasure as apply(T) of type Predicate<T> but does not override it
Name clash: The method apply(F) of type Function<F,T> has the same erasure as apply(T) of type Predicate<T> but does not override it
Name clash: The method apply(F) of type Function<F,T> has the same erasure as apply(T) of type Predicate<T> but does not override it
Name clash: The method apply(T) of type Predicate<T> has the same erasure as apply(F) of type Function<F,T> but does not override it
Name clash: The method apply(T) of type Predicate<T> has the same erasure as apply(F) of type Function<F,T> but does not override it
Name clash: The method apply(T) of type Predicate<T> has the same erasure as apply(F) of type Function<F,T> but does not override it
Итак, что здесь происходит?Это флаг компилятора?
Для чего он стоит, я использую Eclipse 3.6, а maven строит с помощью Java 1.6 на моем OSX:
Version: Helios Release
Build id: 20100617-1415
javac -version
javac 1.6.0_20