私有静态字段不是最终的?

时间:2014-12-21 14:18:03

标签: java static final

有人可以举例说明您何时在private static字段上使用private static final字段?我很难想到你想要声明一个private类变量的例子,这个变量可能会发生变化。

2 个答案:

答案 0 :(得分:10)

输入Singleton模式:

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

答案 1 :(得分:7)

是。

例如,当您想要一个计数器变量来计算从一个类创建了多少个对象时,您将使它static - 它与该类相关联而不是一个对象,但它 final因为它正在发生变化:

protected static int counter = 0;

//constructor
counter++;

值得一提的是:

我没有提到Singleton示例,因为如果您想要线程安全,那么变量必须是staticfinal