package test; import java.util.Iterator; public class InnerOfGeneric { public class S { public Iterator iterator() { return null; } } public abstract class A { public abstract class Inner extends S { } } public class B extends A { public class SubInner extends Inner { @Override public Iterator iterator() { throw new RuntimeException(); } } } }