到目前为止,我已经看到一个类似的问题:passing reference of class to another class,他只是要求将引用从A类传递到B类。
到目前为止,我只在构造函数上做到了。
只要我仅以这种简单方式进行操作,此方法就可以工作。
...
this.classA = new ClassA(classB); //getting the null reference
this.classB = new ClassB(classA); //getting the reference from new ClassA
...
classB将包含null,因为它是在classA之后创建的,表示null引用已经存在。
在类A中创建后,是否还有另一种访问引用的方法?
是新ClassB 的引用吗?
一个代码示例将是惊人的,因为到目前为止,我不了解我到目前为止通过创建多个构造函数而听到的“解决方案”……我什至不确定它们是否可以工作。
编辑:这就是我的结构
DestinationContentPanel-> DestinationMainPanel-> DestinationHealthMainPanel-> MainPanel <-BottomBarMainPanel <-LeftPanel
答案 0 :(得分:0)
这听起来像是您要避免的设计。但是,如果必须这样做,我建议创建一个类,该类包含对两个对象的引用,并将其传递给classA和classB:
class RefHolder {
ClassA a;
ClassB b;
}
然后使用它:
RefHolder r = new RefHolder();
r.a = new ClassA(r);
r.b = new ClassB(r);
//at this point, both classes can use the RefHolder that was passed
//to the constructors to access instances of ClassA and ClassB
但这只是一种解决方法,我建议不要使用这种循环依赖类型。