您能否解释一下我没有最终关键字的静态字段的实时场景(或)JAVA API示例?
我在Runtime.java中看到过;制作单身人士他们已声明如下
private static Runtime currentRuntime = new Runtime();
但是我们还需要最终权利吗?
答案 0 :(得分:2)
但是我们还需要最终权利吗?
错误。
静态初始化是线程安全的,没有最终,请参阅VM spec 2.17.5。
在这样的情况下final
是必要的想法是错误的,我在one of my recent answers中已经嗤之以鼻。
在Runtime.java之类的情况下,final
可能仅对帮助避免错误地重新分配字段有用 - 假设它不打算重新分配。
答案 1 :(得分:2)
某些类型的所有实例的计数器:
class MyClass {
private static int count = 0;
public MyClass() {
count++;
}
public static int getCount() {
return count;
}
}
其他例子是经典的单身人士模式。
答案 2 :(得分:1)
在许多情况下,不需要final
。例如:
public class Receipt {
private static long nextId = 0;
public static long getNextId() {
return ++nextId;
}
. . .
}