Java中列舉類的定義以及使用
看到這個標題,很多人不禁要問---什麼是列舉類而且為什麼用列舉類呢?那是因為,一些方法在執行時,它需要的資料不能是任意的,而必須是一定範圍內的值,此類問題在JDK5以前採用自定義帶有列舉功能的類解決,Java5以後可以直接使用列舉予以解決。
舉個簡單的例子,我們每個人都有性別,分為“男”和“女”兩種,為了限定這兩種情況我們就必須限定這兩種情況。下面就請大家看看怎樣幾種手動的實現列舉的方法:
Person類:
-
//手動實現列舉
-
public class Person {
-
private String sex;
-
//利用正則表示式來限制
-
public void setSex(String sex) {
-
if(sex.matches("[男女]")){
-
System.out.println("此性別可以識別!");
-
}else{
-
System.out.println("此性別不可識別!");
-
//throw new RuntimeException("此性別不可識別!");
-
}
-
}
-
public String toString() {
-
return "Person [sex=" + sex + "]";
-
}
-
}
測試類:
-
import domain.Person;
-
public class PersonTest {
-
public static void main(String[] args) {
-
Person p=new Person();
-
p.setSex("人妖");
-
System.out.println(p.toString());
-
}
-
}
輸出效果:
手動實現列舉類:
通過private 將構造器隱藏起來
把這個類的所有可能例項都使用public static final 修飾
屬性不應允許被改動, 所以應該使用 private final 修飾
Sex類:
-
public class Sex {
-
// 性別男
-
public static final Sex m = new Sex("男");
-
// 性別女
-
public static final Sex f = new Sex("女");
-
private final String value;
-
private Sex(String value) {
-
this.value = value;
-
}
-
// 讓外界訪問所定義的性別
-
public String getValue() {
-
return value;
-
}
-
}
測試類:
-
public class Sex {
-
// 性別男
-
public static final Sex m = new Sex("男");
-
// 性別女
-
public static final Sex f = new Sex("女");
-
private final String value;
-
private Sex(String value) {
-
this.value = value;
-
}
-
// 讓外界訪問所定義的性別
-
public String getValue() {
-
return value;
-
}
-
}
輸出效果: