内部クラスを持つジェネリック クラスをコンパイルするときに問題が発生します。クラスはジェネリック クラスを拡張し、内部クラスも拡張します。
ここで実装されたインターフェース:
public interface IndexIterator<Element>
extends Iterator<Element>
{
...
}
汎用スーパークラス:
public abstract class CompoundCollection<Element, Part extends Collection<Element>>
implements Collection<Element>
{
...
protected class CompoundIterator<Iter extends Iterator<Element>>
implements Iterator<Element>
{
...
}
}
コンパイラ エラーのあるジェネリック サブクラス:
public class CompoundList<Element>
extends CompoundCollection<Element, List<Element>>
implements List<Element>
{
...
private class CompoundIndexIterator
extends CompoundIterator<IndexIterator<Element>>
implements IndexIterator<Element>
{
...
}
}
エラーは次のとおりです。
type parameter diergo.collect.IndexIterator<Element> is not within its bound
extends CompoundIterator<IndexIterator<Element>>
^
なにが問題ですか?コードはEclipseでコンパイルされますが、Java 5コンパイラではコンパイルされません(MacとEclipse 3.5でJava 5でantを使用します)。いいえ、静的内部クラスに変換できません。