【发布时间】:2016-11-05 17:51:00
【问题描述】:
我是 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”指针,但是当需要这种行为的类数量增加时,该解决方案似乎并不优雅。
有什么想法吗?提前致谢!
【问题讨论】:
-
您能否更具体地回答这个问题?像你想只有一个
FirstClass的实例吗? -
如果您不将
App(又名this)传递给SecondClass构造函数,那么您如何期望getWhoeverCreatedThisInstance()工作,因为App是 谁创建了这个实例? -
@Blip:是的,只需要一个实例。基本上它是 GUI、数据库连接器等类......
-
@Andreas:嗯,我想知道 Java 是否提供了一些方法来访问“创建者”实例而无需“this”预解决方法
-
@StanleyBarkwill 它没有。传递
this不是“解决方法”。你就是这样做的。