Compile error on inheritance of generic inner class extending with bounds
        Posted  
        
            by Arne Burmeister
        on Stack Overflow
        
        See other posts from Stack Overflow
        
            or by Arne Burmeister
        
        
        
        Published on 2010-04-09T21:20:45Z
        Indexed on 
            2010/04/09
            21:23 UTC
        
        
        Read the original article
        Hit count: 582
        
I have a problem when compiling a generic class with an inner class. The class extends a generic class, the inner class also.
Here the interface implemented:
public interface IndexIterator<Element>
    extends Iterator<Element>
{
  ...
}
The generic super class:
public abstract class CompoundCollection<Element, Part extends Collection<Element>>
    implements Collection<Element>
{
  ...
  protected class CompoundIterator<Iter extends Iterator<Element>>
      extends ImmutableIterator<Element>
  {
    ...
  }
}
The generic subclass with the compiler error:
public class CompoundList<Element>
    extends CompoundCollection<Element, List<Element>>
    implements List<Element>
{
  ...
  private class CompoundIndexIterator
      extends CompoundIterator<IndexIterator<Element>>
      implements IndexIterator<Element>
  {
    ...
  }
}
The error is:
type parameter diergo.collect.IndexIterator<Element> is not within its bound
       extends CompoundIterator<IndexIterator<Element>>
                                             ^
What is wrong? The code compiles with eclipse, but bot with java 5 compiler (I use ant with java 5 on a mac and eclipse 3.5). No, I cannot convert it to a static inner class.
© Stack Overflow or respective owner