Jtv*_*d78 4 java parameters client static constructor
我无法在谷歌上找到这个问题的答案,所以这里有.
是否可以使用静态对象,以便程序的其余部分可以引用该对象?我不知道如何澄清我的问题,所以我只是展示示例代码.
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;
}
}
Run Code Online (Sandbox Code Playgroud)
那么,在整个程序中使用getClient()方法来访问Frame对象是否可以接受,而不是将其作为参数发送给我创建的(大多数)对象?在整个程序中使用Frame,并将其作为参数添加只是为每个构造函数添加一个参数.
谢谢
取决于不止一件事......
1)用法.您是否希望能够说MyClass.getClient()并获取对Client变量的引用?如果你的目标是单一的东西 - 是的.如果你的目标是一个非常方便的东西 - 是的,如果安全的话,如果你只是希望它随处可见 - 不.如果从错误的地方/时间访问它会导致崩溃和错误 - 没有.
2)人们将使用你所暴露的任何东西,期间.如果他们看到你的代码像这样提取客户端,他们也会在不合适时使用它,那么它会导致很多错误吗?:)
3)设计你真的需要吗?传递它像参数一样比在任何时候绝对访问它更清晰吗?
在衡量之后,你决定了.这看起来像它构建和工作正常.但是,任何需要这种不受限制的访问(上面提到的任何时间访问)到运行时特定的东西可能不是最好的方法; 什么适用于家庭作业可能不适用于企业软件.