【发布时间】:2014-11-01 03:23:44
【问题描述】:
这个问题讨论了非静态最终变量的做法。
我的第一印象是非静态的final变量是没用的,因为final变量在初始化后不能重新赋值。
class Foo {
public static final int BAR = 10;
}
这意味着从Foo 类型创建的所有对象都将具有BAR = 10。
像这样使用非静态但最终的变量什么时候有用、实用或被接受?
class Foo {
public final int BAR = 10;
}
那么在什么情况下后者变得有用呢?因为它基本上意味着同样的事情。
【问题讨论】:
-
如果你在ctor中设置了。
-
“在变量上使用 final 修饰符,初始化后没有什么可以改变它,对吧?” – 在你的例子中,是的。但是,请注意不要将 Java 中的
final与 C++ 中的const混淆。如果它不是原始类型,而是带有可以通过公共方法更改的状态的类,那么即使变量声明为final,该状态也可以更改。 -
@JClassic did so
标签: java