Java 类如何获得自身的实例?
今天,我正在编写一个教程,将按钮集成到一个构建良好的游戏引擎中。这是请求win的代码Java 类如何获得自身的实例?,java,jframe,Java,Jframe,今天,我正在编写一个教程,将按钮集成到一个构建良好的游戏引擎中。这是请求win的代码 public class ButtonEvent{ private Window win; public ButtonEvent(){ this.win = Window.getWindow(); } /*Other methods*/ } 我看完了整个视频,但那个看了这堂课的家伙从来没有提到他对他的视窗课做了什么。在那个视频中,他碰巧单击了wind
public class ButtonEvent{
private Window win;
public ButtonEvent(){
this.win = Window.getWindow();
}
/*Other methods*/
}
我看完了整个视频,但那个看了这堂课的家伙从来没有提到他对他的视窗课做了什么。在那个视频中,他碰巧单击了window类,然后单击了下一个类。在那个时候,当我暂停视频时,我看到了他的getWindow()方法。我写在下面
public class Window extends Canvas{
public Window win; //I tried doing this
/*Other methods*/
public static Window getWindow(){
return win;
}
}
有人能解释一下他是怎么做到的吗?我知道这个问题有点含糊不清,但这是我唯一需要解决的问题
谢谢 变化
public Window win;
到
您将拥有
getWindow()
的适当本地可见性,以查看窗口
字段,它将通过调用编译器插入的隐式空构造函数来初始化(这是新窗口
的赋值).使用单例模式确保在整个应用程序中只创建和使用一个窗口的实例。请注意,单例被认为是一种“反模式”,这意味着通常有更好的方法,例如使用容器管理的对象(请参阅PicoContainer、Spring IoC等)
你必须在某个地方创建一个实例。不,如果你的窗口类将有一个窗口字段,那么该字段可能是静态的。但更重要的是,不要使用该教程,因为如果让你学习AWT的话,它已经过时了。我没有使用AWT,一切都是自制的课程,它恰好有相同的名称。通过构造函数传递按钮vent
对窗口的引用不是更好吗?如果我有一个空构造函数,这很好。这解决了我一半的问题。当我有一个完整的构造函数(字符串标题、整数宽度、整数高度)时会发生什么?你可以定义一个私有静态窗口然后在静态方法中初始化它,就像在singleton@Kenneth标题、宽度和高度从何处提供?它们是从命令行、属性文件传入的,还是您只是在源代码中硬编码它们?
private static Window win = new Window();
public class Window {
private static Window INSTANCE = null;
public static Window getWindow() {
if (INSTANCE == null) {
INSTANCE = new Window();
}
return INSTANCE;
}
}