Java 非最终的私有静态字段?

Java 非最终的私有静态字段?,java,static,final,Java,Static,Final,有人能给我举个例子,说明你什么时候会在私有静态最终字段上使用私有静态字段吗?我很难想出一个例子,说明什么时候你想要声明一个private类变量,这个变量可能会发生变化。是的 例如,当您想用一个计数器变量来计算从一个类创建了多少个对象时,您将使其成为静态的——它与该类关联,而不是对象,但它不是最终的,因为它在变化: protected static int counter = 0; //constructor counter++; 值得一提的是: 我没有提到Singleton示例,因为如果希

有人能给我举个例子,说明你什么时候会在
私有静态最终
字段上使用
私有静态
字段吗?我很难想出一个例子,说明什么时候你想要声明一个
private
类变量,这个变量可能会发生变化。

是的

例如,当您想用一个计数器变量来计算从一个类创建了多少个对象时,您将使其成为
静态的
——它与该类关联,而不是对象,但它不是
最终的
,因为它在变化:

protected static int counter = 0;

//constructor
counter++;

值得一提的是:


我没有提到Singleton示例,因为如果希望线程安全,变量必须是
static
final

输入单例模式:

public class Clazz {

    public static void main(String[] args) {
        MyObject myObject = MyObject.getInstance();
    }
}

class MyObject {
    private static MyObject instance; 
    //I belong to the class, but I need not be created before somebody wants me.

    private MyObject() {
    }

    public static MyObject getInstance() {
        if (instance == null) {
            instance = new MyObject();
        }
        return instance;
    }
}

现在您提到它似乎是一个显而易见的用例;您可以同步初始化块。有一个线程安全的、延迟加载的单例是可能的。当然!我自己也用过!我就是不记得了!它可以是
final
,因为它只分配了一次。@marounnaroun首选的方法是什么?决赛还是不决赛?