Да, это разрешено в Java.Компилятор отслеживает зависимости способом, немного отличающимся от компиляторов C / C ++, поэтому, когда он обнаруживает, что вы скомпилировали Object1, которому нужно использовать некомпилированную версию Object2, он также скомпилирует Object2.
.значение «содержит» в этом контексте, чтобы быть технически правильным, ни один объект не содержит другой, они оба содержат ссылки на другой.Тем не менее, нет никаких ограничений на объекты, содержащие ссылки (независимо от того, насколько они круглые).
Интересно отметить, что сборщик мусора также прекрасно работает с циклическими ссылками, поэтому, если создается автономный круг ссылок на объекты, онибудет собирать мусор примерно в одно и то же время.Старые методы сборки мусора, которые работают через подсчет ссылок, могут быть обмануты циклическими ссылками, но Java использует алгоритм достижимости, который определяет, достижимы ли объекты из основного потока (ов) программы.