編集: これはコードの問題ではなく、Groovy Eclipse プラグイン ( http://jira.codehaus.org/browse/GRECLIPSE-373 )のバグであることが判明しました。
Eclipseは、Java プログラムのあいまいな型に関する奇妙なエラー メッセージを表示しますが、その理由がよくわかりません。返されるデータの種類を示すジェネリック パラメーターを受け取るインターフェイスがあります。
public interface InterfaceA<T> {
T getData();
}
その実装の1つは次のようになります。
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();
私はこれに困惑しています。