首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

Java 空白 final(Blank Final)詳解:延遲初始化的靈活性與構造器強制賦值

     編輯:Java 綜合教學

空白 final(Blank Final)

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 { }

意義

  • 每個實例可擁有不同的 final 字段值,同時保持“不可變”語義
  • 比直接初始化更靈活,支持構造器參數化賦值
  • 編譯器靜態分析確保所有構造路徑均賦值
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved