Java中列舉的詳解

2021-09-22 18:41:09 字數 1097 閱讀 5908

列舉是jdk1.5版本新增的特性(泛型、for-each等如今被廣泛應用的特性也是由jdk1.5時所新增的),另外到了jdk1.6後switch語句支援列舉型別。

列舉的好處以及與常量類的區別:

1)列舉型可以直接與資料庫打交道,我通常使用varchar型別儲存,對應的是列舉的常量名。(資料庫中好像也有列舉型別,不過也沒用過)

2) switch語句支援列舉型,當switch使用int、string型別時,由於值的不穩定性往往會有越界的現象,對於這個的處理往往只能通過if條件篩選以及default模組來處理。而使用列舉型後,在編譯期間限定型別,不允許發生越界的情況

3) 當你使用常量類時,往往得通過equals去判斷兩者是否相等,使用列舉的話由於常量值位址唯一,可以用==直接對比,效能會有提高

4) 常量類編譯時,是直接把常量的值編譯到類的二進位制**裡,常量的值在公升級中變化後,需要重新編譯引用常量的類,因為裡面存的是舊值。列舉類編譯時,沒有把常量值編譯到**裡,即使常量的值發生變化,也不會影響引用常量的類。

5)列舉類編譯後預設為final class,不允許繼承可防止被子類修改。常量類可被繼承修改、增加欄位等,容易導致父類的不相容。

1.來個最簡單的直接上**吧,直接建立enum類:

package com.jk.common;

public enum zuulfiltertypeenum

public string gettype()

}

取得時候我們怎麼取呢?非常簡單的,直接類名點就可以啦

zuulfiltertypeenum.pre.gettype()
2.再舉例乙個integer型別的:

package com.jk.common;

public enum zuulfilterorderenum

public integer getorder()

}

取得時候:

zuulfilterorderenum.one.getorder()
是不是很簡單呢?

Java列舉中巢狀列舉用例

最近專案中需要在列舉類中定義列舉常量的子列舉,翻了一下程式設計思想,順手寫了乙個列舉中巢狀列舉的小demo,供各位碼友參考。public enum testenum public string getcode public string getdescription enum high implem...

java開發中的列舉類

定義乙個列舉類public enum seasonenum列舉類常用方法int compareto e o 該方法用於與指定列舉物件比較順序 string name 返回列舉例項的名稱 int ordinal 返回列舉值在列舉中的索引值 string tostring 返回列舉常量的名稱 定義乙個帶...

Java中的列舉 EnumMap與EnumSet

public enum databasetype 某類中定義的獲取資料庫url的方法以及enummap的宣告。private enummapurls new enummap databasetype.class public databaseinfo 根據不同的資料庫型別,返回對應的url para...