什么时候使用空白的最终变量?
问题内容:
我在查看有关最终变量的另一个问题,并注意到您可以声明最终变量而无需初始化它们(空白的最终变量)。是否有理由这样做,何时才是有利的?
问题答案:
这对于创建不可变对象很有用:
public class Bla {
private final Color color;
public Bla(Color c) {this.color = c};
}
Bla是不可变的(一旦创建,就无法更改,因为颜色是最终的)。但是您仍然可以通过用各种颜色构造它们来创建各种Blas。
例如,另请参阅此问题。
编辑
也许值得一提的是,“空白最终”在Java中具有非常特殊的含义,这似乎在注释中造成了一些混乱-
参见Java语言规范4.12.4:
空白的final是其声明缺少初始化程序的final变量。
然后,您必须在构造函数中分配该空白的最终变量。