编辑:结果证明这根本不是代码问题,而是 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
}
}
还有一个 InterfaceA 的容器
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();
我被这个难住了。