【发布时间】:2013-06-24 14:23:26
【问题描述】:
我在谷歌上真的找不到这个问题的答案,所以就这样吧。
是否可以使用静态对象以便程序的其余部分可以引用该对象? 我不完全知道如何澄清我的问题,所以我只显示示例代码。
public class Client {
Frame f;
private static Client mainClient;
public static void main(String[] args){
new Client().init();
}
private void init(){
mainClient = this;
f = new Frame();
}
public static Client getClient() {
return mainClient;
}
public Frame getFrame(){
return f;
}
}
那么,是否可以在整个程序中使用 getClient() 方法来访问 Frame 对象,而不是将其作为参数发送给我创建的(大多数)对象?框架在整个程序中都使用,添加它作为参数只是为每个构造函数添加一个参数。
谢谢
【问题讨论】:
-
请务必注意,实际上并不存在“静态实例”之类的东西。有静态的变量,但对象本身并不是静态的。
-
@Jtvd78 简短的回答是:这是绝对可以接受的。如果您使用线程,请注意线程安全。
-
值得问一下:1)在这个应用程序的生命周期中是否总是只有一个Frame,2)程序的所有部分是否真的需要访问整个Frame,以及3 ) 是否应该共享数据模型而不是 Frame。
-
为了澄清,只有一个客户端实例,它只生成一个框架实例。这贯穿于整个计划。至于线程安全,有人可以澄清为什么这不是线程安全的吗?此外,您提到共享数据模型可能是更好的选择。我会考虑作为一种选择
标签: java parameters static constructor client