Ho un problema durante la compilazione di una classe generica con una classe interna. La classe estende una classe generica, anche la classe interiore.Errore di compilazione sull'ereditarietà della classe interna generica che si estende con i limiti
Qui l'interfaccia implementata:
public interface IndexIterator<Element>
extends Iterator<Element>
{
...
}
classe Super generica:
public abstract class CompoundCollection<Element, Part extends Collection<Element>>
implements Collection<Element>
{
...
protected class CompoundIterator<Iter extends Iterator<Element>>
implements Iterator<Element>
{
...
}
}
La sottoclasse generica con l'errore del compilatore:
public class CompoundList<Element>
extends CompoundCollection<Element, List<Element>>
implements List<Element>
{
...
private class CompoundIndexIterator
extends CompoundIterator<IndexIterator<Element>>
implements IndexIterator<Element>
{
...
}
}
L'errore è:
type parameter diergo.collect.IndexIterator<Element> is not within its bound
extends CompoundIterator<IndexIterator<Element>>
^
Cosa c'è che non va? Il codice viene compilato con eclipse, ma non con il compilatore java 5 (utilizzo formica con java 5 su mac ed eclipse 3.5). No, non posso convertirlo in una classe interna statica.
Qualche possibilità di provarlo con Java 6?Potrebbe essere un bug del compilatore. –
Appena provato con Java 6. Stesso messaggio di errore. Interessante ... –
@mmyers: buona idea @Eval: grazie, ho provato anche io sul mac 1.6 jdk - stesso errore –