| 對象 | 效果 | 範例 |
| 類 | 不可被繼承 | final class String |
| 方法 | 不可被覆寫 | final void init() |
| 欄位/變數 | 賦值後不可變 (參考不變,物件內容仍可變) | final List<String> list = new ArrayList<>(); |
4. abstract 規則
- 含
abstract 方法的類必須宣告為 abstract
abstract 類可無抽象方法 (純粹防止實例化)
- 介面隱式
abstract (JDK 8 前方法預設為 abstract)
5. synchronized 實戰
// 實例方法同步 = synchronized(this)
public synchronized void instanceMethod() { ... }
// 靜態方法同步 = synchronized(MyClass.class)
public static synchronized void staticMethod() { ... }
// 同步區塊 (精細鎖粒度)
public void method() {
synchronized (lockObject) { ... }
}
6. volatile 記憶體可見性
class Flag {
volatile boolean stop = false; // 保證寫入對其他執行緒立即可見
void run() { while (!stop) { ... } }
void stop() { stop = true; }
}
不保證:複合操作原子性 (volatile int i; i++; 非原子)。需配合 AtomicInteger 或 synchronized。
7. transient 序列化排除
class User implements Serializable {
String username;
transient String password; // 不序列化
transient Logger logger; // 非序列化資源
}
8. strictfp 浮點嚴格模式
預設 JVM 可使用 CPU 暫存器額外精度 (x86 80-bit),導致跨平台結果微異。strictfp 強制嚴格 IEEE 754 (32/64-bit)。
strictfp class StrictMath { // 類內所有方法自動 strictfp
strictfp double calc() { return 0.1 + 0.2; } // 保證跨平台一致
}
9. native JNI 橋接
// Java
public class NativeLib {
static { System.loadLibrary("mylib"); }
public native int add(int a, int b);
}
// C (JNI)
JNIEXPORT jint JNICALL Java_NativeLib_add(JNIEnv *env, jobject obj, jint a, jint b) {
return a + b;
}
組合使用規則
abstract + final:互斥 (abstract 要求覆寫,final 禁止覆寫)
abstract + private:互斥 (private 不可被子類看見覆寫)
abstract + static:互斥 (static 無 this,無多型)
abstract + synchronized:互斥 (abstract 無方法體)
final + volatile:合法 (常數不可變,volatile 無意義但合法)
static + final:常數模式 static final int MAX = 100;
實務建議
- 預設 package-private,按需放寬 → 封裝性最佳
- 常數用
static final,命名全大寫底線分隔
- 共享可變狀態:
volatile 簡單旗標 / Atomic* 計數器 / synchronized 複雜邏輯
- 序列化類:明確標記
transient (敏感資料、非序列化資源)
- 介面方法:JDK 8+ 可用
default/static/private,減少抽象類需求
總結
11 種修飾符構成 Java 封裝、並發、序列化、原生互操作、浮點精度的語言級控制面。精通其語義邊界與組合規則,是寫出健壯、可維護、高效能 Java 代碼的基礎功力。
- 上一篇文章: J2ME MIDlet 生命週期實戰驗證:簡單程式碼觀察 startApp/pauseApp/destroyApp 調用順序
- 下一篇文章: J2EE 開發環境搭建實戰:JBuilder 7 + WebLogic 7.0 完整配置指南
Copyright ©
程式碼之家 All Rights Reserved