Nation-Town-Citizens链中的循环引用

时间:2014-10-17 20:49:16

标签: java

假设我有三个班级,国家城镇公民。一个国家包含城镇,一个城镇包含公民。

public class Nation {
    Set<Town> towns;
}

public class Town {
    Set<Citizen> citizens;
}

public class Citizen {

}

有时我需要了解公民所属的国家。但是,通过上述实现,除非我这样做,否则无法知道:

public class Nation {
    Set<Town> towns;
}

public class Town {
    Set<Citizen> citizens;
    final Nation nation;

    public Town (Nation nation) {
        this.nation = nation;
    }
}

public class Citizen {
    final Town town;

    public Citizen (Town town) {
        this.town = town;
    }

    public Nation getNation() {
        return this.town.nation;
    }
}

我经常被警告远离“循环引用”。这是否构成循环参考?如果是这样,应该避免吗?如果应该避免,这个解决方案的替代方案是什么?

1 个答案:

答案 0 :(得分:0)

通过最初的实施,获得一个公民的国家将是一个两步的过程。

为此,你需要

  1. 确定公民所属的城镇,
  2. 哪个国家包含那个城镇。
  3. 因此,在您的主要课程的某个地方,您需要对国家/地区的详细信息进行以下操作

        nations.get(towns.get(citizens.get(person)))  //--> gives you the Nation details
    
相关问题