java - 如何正确实现Java类之间的通信

标签 java class

我是 Java 编程的初学者,目前正在开发具有更复杂类结构和 GUI 的应用程序。这可能是一个愚蠢的问题,但很难用谷歌搜索,所以我在这里问。

我有一个主类,看起来像这样:

package app;

public class App {
    private FirstClass fc;
    private SecondClass sc;

    public App () {
        fc = new FirstClass ();
        sc = new SecondClass ();

        // ... code continues ...
    }
}

假设 SecondClass 是在这个 .java 文件之外定义的(就像 GUI 表单一样)。有没有办法让我从“sc”实例(不传递“this”指针)访问“fc”实例(或 App 实例的其他成员变量)?像这样的东西:

class SecondClass {
    public void someMethod() {
        getWhoeverCreatedThisInstance().fc.getSomeData();

        // ... code continues ...
    }
}

如果不是,我做错了什么?我应该以不同的方式设计它吗?也许将“fc”设置为静态?但是,如果我希望我的应用程序的更多类相互通信,我应该将它们全部设为静态吗?那么拥有非静态的东西有什么意义呢?我可以在“SecondClass”的构造函数中传递“App”或“fc”实例的“this”指针,但当需要这种行为的类数量增加时,该解决方案似乎不够优雅。

有什么想法吗?提前致谢!

最佳答案

我的建议是实现一个带接口(interface)的回调系统。您的每个相互通信的类都应该实现这些。 这些类应该注册到创建类。 然后他们可以在创建类中调用一个方法,该方法调用每个注册类的接口(interface)方法并以此方式传递数据。

这个 SO 答案可能有帮助 https://stackoverflow.com/a/18279545

关于java - 如何正确实现Java类之间的通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40441381/

相关文章:

java - 如何从 BroadcastReceiver 发出通知?

Java - 如何停止运行任意代码的线程?

python - 在理解中引用类变量时出现名称错误

python - 如何使用某些构造函数创建派生类? (Python)

python - 确定 jitclass 方法的输入参数类型

class - 非托管 var 作为托管类 c++ 的成员

python - 替换实例方法

java - 如何正确同步/锁定变量?

java - 如何在递归二分搜索中显示新的中间位置

java - 使用 ColdFusion 解压 64 位 zip 文件