Intellij 依赖查看器和包循环依赖

Intellij dependency viewer and package cyclic dependency

在我的整个编程生涯中,我一直认为循环依赖如下:
给定

IF

  1. Class 来自 package1 引用 class 来自 package2
  2. Class 来自 package2 引用 class 来自 package3
  3. Class 来自 package3 引用 class 来自 package1

然后
项目包含循环依赖 package1 > package2 > package3 > package1。

当 Intellij 的依赖项查看器告诉我时,这是一个非常大的惊喜:

IF

  1. Class 来自 package1 引用 class 来自 package2
  2. Class from subpackage2 references class from package3
  3. Class 来自 package3 引用 class 来自 package1

然后
项目包含循环依赖 package1 > package2 > package3 > package1.

任何人都可以向我解释一下循环依赖的严格定义是什么,为什么 Intellij 会显示如此奇怪的结果?谢谢。

依赖是可传递的,所以由于依赖subpackage2,subpackage2又依赖package3,package2本身又依赖package3,因此形成了与示例1完全相同的图。我更惊讶其他工具不要把它看成一个圆圈,因为这里的 IntelliJ 是正确的。