java - 如何在我的对象层次结构中找到循环?

标签 java algorithm cyclomatic-complexity object-graph

有一个类 Company,它引用了 Company 的另一个实例来表示 parent。假设有四家公司 c1c2c3 & c4c2 , c3, c4 的母公司设置为c1

例如:

public class Company {
  public Company parent;

  public Company() { }
  public Company(Company parent) {
    this.parent = parent;
  }

  public static void main(String[] args) {
    Company c1 = new Company();
    Company c2 = new Company(c1);
    Company c3 = new Company(c1);
    Company c4 = new Company(c1);
}

如果我们将c2设置为c1的母公司:

c1.parent = c2;

然后它将创建一个 Cyclomatic Complexity公司层次结构中的无限循环,我们必须在我们的系统中避免这种情况。

我们希望能够在运行时检测到这一点。在上述情况下检查同一类对象的圈复杂度的最佳算法是什么?

最佳答案

您的任务与圈复杂度无关。您的实体基本上形成了一个图形,您想要检测其中的循环。常见的方法是执行 DFS .

您可以找到很多如何做到这一点的示例 over the internet .

关于java - 如何在我的对象层次结构中找到循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31913900/

相关文章:

java - 如何在循环中选取 ASCII 输入文件中的列

java - JCR 170 数据建模 : Node names

python - 生成没有相邻相等元素的列表的所有排列

java - 计算填充以使矩形居中对齐(按百分比调整大小)

ios - 如何找到 Xcode 项目的圈复杂度?

java - Libgdx 使用 glClearColor 调暗屏幕

php - 基于设备保护 PHP API

c# - 圈复杂度,多少算太多?

java - 有什么方法可以降低以下java代码的复杂性吗?

java - 如何将值从一个 Java 类复制到具有相同属性的另一个类