什么时候使用空白的最终变量?


问题内容

我在查看有关最终变量的另一个问题,并注意到您可以声明最终变量而无需初始化它们(空白的最终变量)。是否有理由这样做,何时才是有利的?


问题答案:

这对于创建不可变对象很有用:

public class Bla {
    private final Color color;

    public Bla(Color c) {this.color = c};

}

Bla是不可变的(一旦创建,就无法更改,因为颜色是最终的)。但是您仍然可以通过用各种颜色构造它们来创建各种Blas。

例如,另请参阅此问题。

编辑

也许值得一提的是,“空白最终”在Java中具有非常特殊的含义,这似乎在注释中造成了一些混乱-
参见Java语言规范4.12.4

空白的final是其声明缺少初始化程序的final变量。

然后,您必须在构造函数中分配该空白的最终变量。