EDIT: Cela n'a pas été un problème avec le code du tout, mais avec un bug dans le plugin Eclipse Groovy (http://jira.codehaus.org/browse/GRECLIPSE-373)Java type ambigu pour la méthode?
Eclipse me donne un message d'erreur bizarre sur les types ambigus dans un programme Java et je ne comprends vraiment pas pourquoi. J'ai une interface qui prend un paramètre générique indiquant quel type de données il retourne.
public interface InterfaceA<T> {
T getData();
}
L'une des implémentations de celui-ci ressemble à ceci:
public class Impl<T extends AnotherClass> implements InterfaceA<Collection<T>> {
public Collection<T> getData() {
// get the data
}
}
Il y a aussi un récipient pour un InterfaceA
public class Container<T extends InterfaceA>
{
private T a;
public Container(T a) {
this.a = a;
}
public T getA() {
return a;
}
}
Faire cela provoque l'erreur "getData est ambigu".
Container<Impl<AnotherClass>> c = new Container(new Impl<AnotherClass>());
Collection<AnotherClass> coll = c.getA().getData();
Je suis perplexe sur celui-ci.
Ne pas voir ce problème dans Eclipse 3.4.2 en utilisant JDK 1.6.0_10 – Nate
Peut-être avez-vous besoin de nous fournir des détails sur 'AnotherClass'. J'ai juste essayé 'java.util.Date' (c'est non-final) à la place de' AnotherClass' et il compile bien dans Eclipse. Juste un mineur, il vous manque 'interface' dans' InterfaceA' et 'getData' devrait être public dans' Impl' –
J'utilise Eclipse 3.5 avec JDK 1.6.0_16, mais j'ai réalisé que je n'ai pas publié de code cassé. J'ai mis à jour le code avec le problème réel. –