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

Java 常數分組最佳實踐:接口常量 vs 類型安全枚舉模式

     編輯:Java 相關知識

接口常量組:簡單但無類型安全

public interface Months {
    int JANUARY = 1, FEBRUARY = 2, ..., DECEMBER = 12;
}
// 使用:Months.JANUARY
  • 優點:語法簡單,命名空間隔離,避免魔術數字。
  • 缺點:本質是 int,編譯器不阻止傳入無效值(如 99)。

類型安全枚舉模式:Month2 實現

public final class Month2 {
    private String name;
    private Month2(String nm) { name = nm; } // 私有構造器,防實例化
    public String toString() { return name; }

    public final static Month2 JAN = new Month2("January"), ... DEC = new Month2("December");
    public final static Month2[] month = { JAN, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV, DEC };
    // 注:數組多放一個 JAN 使下標 1-12 對應月份
}

優勢

  1. 類型安全:變量聲明 Month2 m 只能接受 Month2 實例。
  2. 單例模式:每月份僅一實例,可用 == 比較(同 equals())。
  3. 可擴展行為:可添加方法(如 daysInMonth())。
  4. 命名空間隔離:Month2.JAN。

對比總結

特性接口常量類型安全枚舉
類型安全無(int)強
比較方式==== / equals() 均可
可擴展方法否是
Java 5+ 建議直接用 enum 關鍵字(本質同類型安全枚舉)
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved