Этот класс:
public class OuterChild extends OuterChild.InnerParent {
public static class InnerParent {
}
}
Не удалось скомпилировать:
$ javac OuterChild.java
OuterChild.java:1: error: cyclic inheritance involving OuterChild
public class OuterChild extends OuterChild.InnerParent {
^
1 error
потому что OuterChild
будет "зависеть" от себя, потому что (за & sect; 8.1.4 "Суперклассы и подклассы" Спецификации языка Java, Java SE 8 Edition), класс напрямую зависит от любого типа, который "упоминается в [его] extends
или implements
clause [& hellip;] как квалификатор в полностью квалифицированной форме суперкласса или имени суперинтерфейса."
Но я действительно не понимаю мотивацию здесь. Какая проблемная зависимость? Это просто для согласованности с случаем, когда InnerParent
были не static
(и поэтому заканчивались бы лексически охватывающим экземпляром самого себя)?