枚舉方便維護,靜態常量方便使用。
1)枚舉型可以直接與數據庫打交道,我通常使用varchar類型存儲,對應的是枚舉的常量名。(數據庫中好像也有枚舉類型,不過也沒用過)
2) switch語句支持枚舉型,當switch使用int、String類型時,由於值的不穩定性往往會有越界的現象,對於這個的處理往往只能通過if條件篩選以及default模塊來處理。而使用枚舉型后,在編譯期間限定類型,不允許發生越界的情況
3) 當你使用常量類時,往往得通過equals去判斷兩者是否相等,使用枚舉的話由於常量值地址唯一,可以用==直接對比,性能會有提高
4) 常量類編譯時,是直接把常量的值編譯到類的二進制代碼里,常量的值在升級中變化后,需要重新編譯引用常量的類,因為里面存的是舊值。枚舉類編譯時,沒有把常量值編譯到代碼里,即使常量的值發生變化,也不會影響引用常量的類。
5)枚舉類編譯后默認為final class,不允許繼承可防止被子類修改。常量類可被繼承修改、增加字段等,容易導致父類的不兼容。