说我有:class A
取决于class B
取决于class C
取决于class A
。
似乎无法编译。我读过this post about disabling compile-time depedency-checking,但是我的所有类都在类路径中,定义明确,等等。唯一的问题是它们相互依赖。
有没有办法编写这样一个可以顺利编译的应用程序?
答案 0 :(得分:6)
我们在遗留代码库中确实有几个这样的依赖循环,它们可以顺利编译。
这并不是说拥有循环依赖是件好事 - 恰恰相反。我打算最终摆脱它们来清理我们的架构。然而,与此同时,代码仍然可以编译和工作。
答案 1 :(得分:1)
这里重要的是编译器必须能够同时编译所有类。如果是这种情况,应该没有问题。当然,你应该处理通常的目录布局问题。
如果无法将软件包编译在一起,那就会变得更加复杂 - 您可能必须首先创建虚拟实现(不依赖于其他类)然后(当您拥有正确的类时)替代他们。但我无法想象不能将它们编组在一起的原因。
答案 2 :(得分:0)
您可以像这样具有循环依赖性,因为Java知道要读取哪些文件以从名称中查找代码。即它一次编译它们。如果您尝试一次编译一个,则只会出现问题。