Java枚举类型 enum
生活随笔
收集整理的這篇文章主要介紹了
Java枚举类型 enum
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
定義
An enum type is a special data type that enables for a variable to be a set of predefined constants. The variable must be equal to one of the values that have been predefined for it.枚舉類型是一種特殊數據類型,能夠為一個變量定義一組預定義的常量。變量必須等于為其預定義的值之一。
枚舉類型是Java 5中新增特性的一部分,它是一種特殊的數據類型,之所以特殊是因為它既是一種類(class)類型卻又比類類型多了些特殊的約束,但是這些約束的存在也造就了枚舉類型的簡潔性、安全性以及便捷性。
枚舉是特殊的類,可以擁有成員變量和方法。
使用
public enum Direction {//實例列表末尾的分號是可選的NORTH, SOUTH, EAST, WEST }Direction類型的實例可以按靜態變量的方式引用:Direction.NORTH,Direction.EAST
在開發中枚舉可以用來定義常量
@Getterpublic enum TaskStatueEnum {NOTSTARTEND(1,"未開始"),EXECUTIONINPROGRESS(2,"執行中"),COMPLETED(3,"已完成");
private int val;
private String descript;
TaskStatueEnum(int val, String descript)
{
this.val=val;
this.descript=descript;
}
public static TaskStatueEnum fomart(int val) throws Exception {
for(TaskStatueEnum property: TaskStatueEnum.values())
{
if(val==property.val)
{
return property;
}
}
throw new Exception(MessageFormat.format("找不到對應{0}的任務狀態",val));
} }
詳解和注意
1>.枚舉類型都隱式繼承了java.lang.Enum類,因此不能繼承其他類,但可以實現接口;
? 2>.枚舉類型只能有私有的構造方法(java運行時創建,外部不能進行實例化);
? 3>不能泛型化;
? 4>當有字段和方法時,枚舉常量的列表必須以分號結尾;
? 5>編譯器在創建枚舉時會自動添加一些特殊方法。例如,它們具有一個靜態values方法。
通過javap命令反編譯class文件可以看出,并且它是被final修飾的,不能被繼承。 ?$ javap Color.class Compiled from "Color.java" public final class com.zuoquan.lt.basic.enums.Color extends java.lang.Enum<com.zuoquan.lt.basic.enums.Color> {public static final com.zuoquan.lt.basic.enums.Color RED;public static final com.zuoquan.lt.basic.enums.Color GREEN;public static final com.zuoquan.lt.basic.enums.Color BULE;public static com.zuoquan.lt.basic.enums.Color[] values();public static com.zuoquan.lt.basic.enums.Color valueOf(java.lang.String);public int getIndex();public void setIndex(int);public java.lang.String getName();public void setName(java.lang.String);static {}; }values方法使用:
Color[] colors = Color.values(); for (Color color : colors) {System.out.println(color.getName()); }? 6>父類Enum中的方法
| S.N. | Method & 描述 |
| 1 | protected Object clone()?該方法將拋出CloneNotSupportedException異常 |
| 2 | int compareTo(E o)?這種方法比較枚舉指定對象的順序. |
| 3 | boolean equals(Object other)?此方法返回true,如果指定的對象是相等于枚舉常量. |
| 4 | protected void finalize()?此方法返回枚舉類不能有finalize方法. |
| 5 | Class getDeclaringClass()?此方法返回此枚舉常量的枚舉類型相對應的類對象. |
| 6 | int hashCode()?此方法返回枚舉常量的哈希碼. |
| 7 | String name()?此方法返回枚舉常量的名稱,正是因為在其枚舉聲明中聲明. |
| 8 | int ordinal()?此方法返回此枚舉常量的序數(其枚舉聲明中的位置,其中初始常量被分配一個序號零). |
| 9 | String toString()?此方法返回枚舉常量的名稱,在聲明中所包含的. |
| 10 | static > T valueOf(Class enumType, String name)?此方法返回具有指定名稱的指定枚舉類型的枚舉常量. |
https://blog.csdn.net/javazejian/article/details/71333103
?
轉載于:https://www.cnblogs.com/mengw/p/11332622.html
總結
以上是生活随笔為你收集整理的Java枚举类型 enum的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PCB封装库网站
- 下一篇: Java 3D期末复习第三章——Java