РЕДАКТИРОВАТЬ: Это оказалось не проблема с кодом вообще, но с ошибкой в плагине Groovy Eclipse (http://jira.codehaus.org/browse/GRECLIPSE-373)
Eclipse дает мне странное сообщение об ошибке о неоднозначных типах в Java-программе, и я действительно не понимаю, почему. У меня есть интерфейс, который принимает универсальный параметр, указывающий, какой тип данных он возвращает.
public interface InterfaceA<T> {
T getData();
}
Одна из реализаций выглядит так:
public class Impl<T extends AnotherClass> implements InterfaceA<Collection<T>> {
public Collection<T> getData() {
// get the data
}
}
Существует также контейнер для интерфейса A
public class Container<T extends InterfaceA>
{
private T a;
public Container(T a) {
this.a = a;
}
public T getA() {
return a;
}
}
Это приводит к ошибке «getData is ambiguous».
Container<Impl<AnotherClass>> c = new Container(new Impl<AnotherClass>());
Collection<AnotherClass> coll = c.getA().getData();
Я поставлен в тупик на этом.