static final)直接內聯到調用處字節碼。String, Integer, LocalDate 等不可變類。| 位置 | 約束 | 典型例子 |
|---|---|---|
| 類 | 不可繼承 | String, Enum, 包裝類 |
| 方法 | 不可重寫 | Object.getClass(), 模板方法 |
| 實例變量 | 引用不可變 | final List<T> list = new ArrayList<>() |
| 靜態變量 | 編譯期常量 | static final int MAX = 100; |
| 方法參數 | 不可重賦值 | void foo(final int x) { ... } |
💡 實戰建議:默認給變量加 final,除非確實需要重新賦值。這能減少可變狀態,降低並發 Bug,也讓代碼意圖更清晰。