Java 1.1 允許聲明 final 但不立即初始化的字段,稱為空白 final。編譯器強制要求在構造器中(或實例初始化塊)完成初始化,否則報錯。
public class BlankFinal {
private final int i = 0; // 直接初始化
private final int j; // 空白 final
private final Poppet p; // 空白 final 引用
public BlankFinal() {
j = 1;
p = new Poppet();
}
public BlankFinal(int j) {
this.j = j;
p = new Poppet();
}
public static void main(String[] args) {
new BlankFinal();
}
}
class Poppet { }