java - 将引用表单类 A 传递给类 B 并将引用表单类 B 传递给类 A Java
问题描述
到目前为止,我已经看到了一个类似的问题:将类的引用传递给另一个类,后者只是要求将 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 类中创建后是否有另一种访问引用的方法?
说new ClassB的参考?
一个代码示例将是惊人的,因为现在我不理解迄今为止通过创建多个构造函数所听到的“解决方案”......我什至不确定它们是否有效。
编辑:这就是我的结构
DestinationContentPanel--> DestinationMainPanel-->DestinationHealthMainPanel-->MainPanel<--BottomBarMainPanel<--LeftPanel
解决方案
这听起来像是您想要避免的设计。但是,如果您必须这样做,我建议创建一个包含对两个对象的引用并将其传递给 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
但这只是一种解决方法,我建议不要使用这种类型的循环依赖。
推荐阅读
- caching - 加载时缓存模型
- python - 用多个组插补缺失值
- c - 反麻烦
- c# - WPF 日历 - 突出承诺日期
- visual-studio-2017 - Visual Studio 2017 无法识别系统变量
- c - 在 IP=127.0.0.1 和 interface='enp0s3' 上创建过滤器的问题
- reactjs - 期望一个赋值或函数调用,而是看到一个表达式:没有未使用的表达式
- google-chrome - JS Userscript:访问新标签的DOM
- c++ - (推测)Android Studio 中的错误错误,但编译器和应用程序运行良好
- c# - 如何使用 html 文本加入 ac# 代码