Java循环参考 - 无法编译

Pet*_*ler 3 java circular-dependency

文件:A.java

class A
{
    B b;
    public A() {
        b = new B();
    }
}
Run Code Online (Sandbox Code Playgroud)

档案:B.java

class B
{
    public B() {}
    public foo(A a) {...}
}
Run Code Online (Sandbox Code Playgroud)

上面的代码无法编译,因为A需要B才能编译,B需要A才能编译.也不要在另一个之前编译.怎么办?

这个例子很简单.我可以删除foo(A a){...}这样的B.java会编译.然后编译A.java.恢复B.java然后编译它.但我正在尝试从源代码构建RXTX,它的依赖性是一个曲折的小短语的迷宫.

我原本希望能编译成非工作类代码.然后将定义的所有类和方法再次编译成工作代码.

有灵丹妙药吗?

Cos*_*atu 6

如果你一次编译它们,它们应该编译好:

javac A.java B.java
Run Code Online (Sandbox Code Playgroud)