java 枚举可以循环吗_(转载)java 枚举 循环遍历以及一些简单常见的使用
本文轉載自:http://blog.csdn.net/qq_27093465/article/details/51706076 作者:李學凱
什么時候想用枚舉類型:
有時候,在設計一個java model對象的時候,你需要一些具體的常量字符串之類的東西,這個東西又沒必要跟整個項目的全局常量放在一起,就放在model的java文件里面是最合適的,那么,你可以有兩種選擇:
1,在java model文件里面,定義public final static XXXX = "" ;
這種就是全局靜態變量,通過類名就可以直接訪問。
2,還是在java model 文件里面,定義個枚舉類型 public enum XXXX{a,b,c,d,e,f};
什么時候,如何使用:
當在和前臺傳過來的數據或者在邏輯操作的代碼里面需要去用到這個常量值去做比較的時候,就是使用枚舉類型的時候。
一般形式是: 類名.枚舉類型名.單個枚舉類型
用上面的例子(假設在一個叫A的model java文件里面),
則為A.XXXX.a.toString();
就可以這么使用了。
為什么要這么設計常量:
這里有個代碼的書寫原則,這東西一般是沒人,而且書里面也是沒人跟你說的,都是代碼看多了,或者,在你犯錯誤的時候才知道的問題。
就是在自己的代碼里面,要是想使代碼很規范,不被吊打,
那么寫出來的邏輯代碼里面是不應該出現常量字符串和常量數字之類的東西。
例如代碼里面出現數字:100,8,
或者其他的數字,
字符串如:只要是在邏輯代碼里面帶引號的。
這些代碼,你寫出來雖然在功能上是沒有問題的,但是,這些都是隱藏的炸彈。
好的代碼,是不會出現這個問題的。這些東西都應該被定義成一個常量,然后再在其他地方使用。
類似c語言里面的宏定義的感覺。
不然在很久之后,忽然有些地方的值換了,只需要修改一處地方,整個項目都不用擔心會出問題,
但是,如果你沒有這么干,那么,沒人知道你在邏輯代碼里面還有這樣的常量存在。
那么代碼就會出現美妙的后果。
然后就炸了。
怎么循環一個枚舉類型。
枚舉有一個方法,values(),
使用形式如: int length = XXXX.values().length
返回的是一個類型與枚舉類型一致的數組。
然后就可以循環這個數組。
就是循環枚舉類型了。
public enum EnumTest {
MON, TUE, WED, THU, FRI, SAT, SUN;
}
//循環輸出 值
for (EnumTest e : EnumTest.values()) {
System.out.println(e.toString());
}
.ordinal()方法。
這個方法就是從枚舉類型的第一個枚舉開始,依次從零開始往上遞增。
上面的例子中a,b,c,d,e,f,依次對應 為數字 ,0,1,2,3,4,5
形式:A.XXXX.a.ordinal();
這么個方式調用。
創建枚舉類型要使用 enum 關鍵字,隱含了所創建的類型都是?java.lang.Enum?類的子類(java.lang.Enum 是一個抽象類)其中的方法和屬性如下圖:
enum 對象的常用方法介紹int?compareTo(E o)?比較此枚舉與指定對象的順序。Class?getDeclaringClass()返回與此枚舉常量的枚舉類型相對應的 Class 對象。String?name()?返回此枚舉常量的名稱,在其枚舉聲明中對其進行聲明。int?ordinal()?返回枚舉常量的序數(它在枚舉聲明中的位置,其中初始常量序數為零)。String?toString()返回枚舉常量的名稱,它包含在聲明中。static > T?valueOf(Class enumType, String name)返回帶指定名稱的指定枚舉類型的枚舉常量。
總結
以上是生活随笔為你收集整理的java 枚举可以循环吗_(转载)java 枚举 循环遍历以及一些简单常见的使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: datetimepicker 更新值无效
- 下一篇: c语言布尔类型赋值给整型,C语言的布尔类