Java 类如何获得自身的实例?

Java 类如何获得自身的实例?,java,jframe,Java,Jframe,今天,我正在编写一个教程,将按钮集成到一个构建良好的游戏引擎中。这是请求win的代码 public class ButtonEvent{ private Window win; public ButtonEvent(){ this.win = Window.getWindow(); } /*Other methods*/ } 我看完了整个视频,但那个看了这堂课的家伙从来没有提到他对他的视窗课做了什么。在那个视频中,他碰巧单击了wind

今天,我正在编写一个教程,将按钮集成到一个构建良好的游戏引擎中。这是请求win的代码

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;
    }
}