如何在Java中转发声明?
我有两个类,每个类都需要在另一个类中调用一个方法,它们都位于不同的名称空间中。例如......
package one;
class A {
public void foo() {
B b = new B();
b.bah();
}
}
和
package two;
class B {
public void bah() {
A a = new A();
a.foo();
}
}
更新
在Eclipse中遇到此代码时,会抛出编译时错误“在构建路径中检测到循环...”。
答案 0 :(得分:3)
只需导入它们。对于这些事情,Java比C ++更聪明。
答案 1 :(得分:1)
在Eclipse中遇到此代码时,会抛出编译时错误“在构建路径中检测到循环...”。
我认为Eclipse很抱怨,因为你的工作区中不同Eclipse项目中的类之间存在循环依赖关系。 Eclipse希望能够以线性顺序构建项目。
如果将相互依赖的类放在同一个项目中,Eclipse会很高兴。
答案 2 :(得分:0)
好吧,你导入了这些类:
package one;
import two.B;
class A {
public void foo() {
new B().bah();
}
}
或使用他们的全名:
package one;
class A {
public void foo() {
new two.B().bah();
}
}
但是,不用说,这将导致抛出异常(至少在你发布的代码片段中......)。
答案 3 :(得分:0)
鉴于此处的注释(即您不需要像编译器可以应对的那样执行显式的前向声明),我已将Eclipse错误降级为警告,并且必须忽略它。
要做到这一点,请转到......
窗口>偏好> Java>编译器>建筑>构建路径问题>循环依赖