在单例中声明变量static

a L*_*ner 2 java singleton

实现单身时:

class MyConnection {
    private static MyConnection connection = new MyConnection();

    private MyConnection() {
    }

    public  static MyConnection getConnection() {
        return connection;
    }
}
Run Code Online (Sandbox Code Playgroud)

1)为什么我们给予connection静态?

这只是因为它getConnection()是静态的,我们不能在静态上下文中引用非静态或者还有其他原因吗?

2)是否有必要宣布connection为最终?

aio*_*obe 9

1)为什么我们给予connection静态?

如果它是非静态的,你需要有一个实例MyConnection来获取connection参考,这样做会破坏目的.:)

这只是因为它getConnection()是静态的,我们不能在静态上下文中引用非静态或者还有其他原因吗?

是.(因为getConnection()需要是静态的,connection需要是静态的.)

2)是否有必要将连接声明为最终?

不,但这是一种很好的做法,因为一旦初始化,就不应该改变.

但是,更好的做法enum改用.

enum MyConnection {

    INSTANCE;

    // your methods...
}
Run Code Online (Sandbox Code Playgroud)

并通过它访问它MyConnection.INSTANCE.

经验法则:如果一个类具有预定义数量的实例,请使用enum.在这种情况下,实例的数量是一个.

  • 此外,如果每次创建"MyConnection"时都创建一个新的"MyConnection",那么内存会很快耗尽... (2认同)