1. 关于 Java Enum:
学过 C/C++ 等语言的人,应该都对 Enum 类型略知一二。 Enum 一般用来表示一组相同类型的常量。如性别、日期、月份、颜色等。对这些属性用常量的好处是显而易见的,不仅可以保证单例,且比较时候可以用 ”==” 来替换 equals。是一种好的习惯。 JDK1.5 之前没有 Enum 这个类型,那时候一般用接口常量来替代。有了 JavaEnum 之后,可以更贴近的表示这种常量。
2. 如何使用 Java Enum
简单的用法: JavaEnum 简单的用法一般用于代表一组常用常量,可用来代表一类相同类型的常量值。如:
性别:
public enum SexEnum {
male , female ;
}
颜色:
public enum Color {
RED , BLUE,GREEN,BLACK ;
}
枚举对象里面的值都必须是唯一的。
可以通过 Enum 类型名直接引用该常量,如 SexEnum.male,Color.RED.
注:以上摘自CSDN:abing37
复杂用法: Java 为枚举类型提供了一些内置的方法,同事枚举常量还可以有自己的方法。可以很方便的遍历枚举对象。
下面是几个示例代码:
Code 1 :EnumMethod.java
下面是枚举类型的常用方法:
/**
* author owenyang
* data 2012-11-2
*/
import static java.lang.System.out;
public class EnumMethod {
enum SexEnum{
male,
famle,
shemale
}
//compareTo()
public static void compare(SexEnum sexE){
for(int i = 0 ; i <SexEnum.values().length; i++){
out.println("The Result of "+sexE+" compareTo "+SexEnum.values()[i]+": "+
sexE.compareTo(SexEnum.values()[i]));
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
for(SexEnum sex: SexEnum.values()){
out.println("Enum member variable: "+sex);
}
//use another way to show
out.println("------------use another way to show------------ ");
for(int i =0;i<SexEnum.values().length;i++){
out.println("Enum member variable: "+SexEnum.values()[i]);
}
//compareTo() and valueOf()
compare(SexEnum.valueOf("shemale"));
//ordinal() to get the index of member variable
for(SexEnum sex: SexEnum.values()){
out.println("Index of "+sex+" "+sex.ordinal());
}
}
}
Code 2:EnumConstructor.java
下面是枚举类型中的构造方法使用
public class EnumConstructor {
//constructor usage
enum SexEnum{
male("I am a man"),
famle("I am a woman"),
shemale("I am a shemale");
private String description;
private SexEnum(String str){
this.description=str;
}
public String getDescription(){
return this.description;
}
}
//we can also define the getDescription in the interface
interface GetDesc{
public String getDescription();
}
enum ExtraEnum implements GetDesc{
male{
public String getDescription(){
return "I am a super man";
}
},
famle{
public String getDescription(){
return "I am a super woman";
}
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
for(SexEnum sex:SexEnum.values()){
System.out.println("Info: "+sex.getDescription());
}
//test interface
for(int i =0;i<ExtraEnum.values().length;i++){
System.out.println(ExtraEnum.values()[i]+" invoke getDescription: "
+ExtraEnum.values()[i].getDescription());
}
}
}
Code 3: EnumerationTest.java
下面是枚举接口的简单示例:
import java.util.Enumeration;
import java.util.Vector;
public class EnumerationTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
Vector<Integer> vector = new Vector<Integer>();
for(int i =0;i<5;i++){
vector.add(i);
System.out.println("add elements to vector: "+i);
}
//将向量转换成枚举接口型
Enumeration<Integer> e = vector.elements();
while(e.hasMoreElements()){
System.out.println("element: "+e.nextElement());
}
}
}
以上,大部分摘自牛人,代码已测。