I've looked through similar questions and have come up short, so here it goes;
public interface Predicate<T>{
boolean apply(T t);
}
public interface Function<F, T>{
T apply(F f);
}
public class ConcretePredicate extends Predicate<Foo>, Function<Bar, Boolean>{
@Override
public boolean apply(Foo foo){/*stuff*/}
@Override
public Boolean apply(Bar bar){/*stuff*/}
}
ConcretePredicate shows the error,
"Name clash: The method apply(T) of type Predicate has the same erasure as apply(F) of type Function but does not override it"
It looks like it should be working though, Anyone have any ideas as to what is going on?
[Edit] So it looks like this is an issue with eclipse, Galileo does not show this error, while Helios does. I've submitted a bug report with eclipse and will update once I get a response.
[Edit] Changed to a simpler case that shows the same error but removes confusion about erasure.