JAVA 列舉類 enum
阿新 • • 發佈:2019-01-27
DEMO1: public class Student { //姓名 private String name; //分數類 private Grade grade; public Student(){} public String getName() { return name; } public void setName(String name) { this.name = name; } public Grade getGrade() { return grade; } public void setGrade(Grade grade) { this.grade = grade; } }
//分數列舉類 public enum Grade { A("A","90-100"), B("B","80-89"), C("C","70-79"), D("D","60-69"), E("E","<60"); private String tip; private String desc; private Grade(String tip,String desc){ this.tip = tip; this.desc = desc; } public String getTip() { return tip; } public String getDesc() { return desc; } }
////////////////////////////////////////////////public class Demo1 { public static void main(String[] args) throws Exception { Student student = new Student(); student.setName("jack"); student.setGrade(Grade.B); System.out.println("姓名:" + student.getName()); System.out.println("等級:" + student.getGrade().getTip()); System.out.println("分數區間:" + student.getGrade().getDesc()); } }
DEMO2 :
//季節列舉類
public enum Season{
SPRING{
public void show(){
System.out.println("春天");
}
},SUMMER{
public void show(){
System.out.println("夏天");
}
},AUTOMN{
public void show(){
System.out.println("秋天");
}
},WINNTER{
public void show(){
System.out.println("冬天");
}
};
//抽像方法
public abstract void show();
}
為什麼需要列舉?
一些方法在執行時,它需要的資料不能是任意的,而必須是一定範圍內的值,此類問題在JDK5以前採用自定義帶有列舉功能的類解決,Java5以後可以直接使用列舉予以解決。
列舉類具有如下特性:
列舉類也是一種特殊形式的Java類。
列舉類中宣告的每一個列舉值代表列舉類的一個例項物件。
與java中的普通類一樣,在宣告列舉類時,也可以宣告屬性、方法和建構函式,但列舉類的建構函式必須為私有的(這點不難理解)。
列舉類也可以實現介面、或繼承抽象類。
JDK5中擴充套件了switch語句,它除了可以接收int, byte, char, short外,還可以接收一個列舉型別。
若列舉類只有一個列舉值,則可以當作單態設計模式使用。
Java中宣告的列舉類,均是java.lang.Enum類的孩子,它繼承了Enum類的所有方法。常用方法:
name()
ordinal()
valueOf(Class enumClass, String name)
values() 此方法雖然在JDK文件中查詢不到,但每個列舉類都具有該方法,它遍歷列舉類的所有列舉值非常方便。