Java:编译相互关联的类

问题描述 投票:0回答:3

假设我有:

class A
取决于
class B
取决于
class C
取决于
class A

似乎无法编译。我已经读过这篇关于禁用编译时依赖性检查的文章,但我的所有类都在类路径内,定义良好等。唯一的问题是它们相互依赖。

有没有办法编写这样一个可以顺利编译的应用程序?

java dependencies
3个回答
6
投票

我们的遗留代码库中确实有几个这样的依赖循环,并且它们确实可以顺利编译。

这并不是说拥有循环依赖是件好事——恰恰相反。我打算最终摆脱它们以清理我们的架构。尽管如此,与此同时,代码仍然可以编译并运行。


1
投票

这里重要的是编译器必须能够同时编译所有的类。如果是这样的话,应该没有什么问题。当然,您应该注意常见的目录布局问题。

如果包不能一起编译,它会变得更加复杂 - 您可能必须首先创建虚拟实现(不依赖于其他类),然后(当您有正确的类时)替换它们。但我真的无法想象无法将它们编译在一起的原因。


0
投票

您可以像这样拥有这种循环依赖关系,因为 Java 知道要读取哪些文件以从名称中查找代码。即它一次编译它们。 如果您尝试一次编译一个,您只会遇到问题。

© www.soinside.com 2019 - 2024. All rights reserved.