定义:它用于声明一组命名的常数,当一个变量有几种可能的取值时,可以将它定义为枚举类型。(来自百度百科)

应用场景:1)声明几种HTTP网络请求方式:GRT,POST,PUT,DELETE等;

              2)声明游戏中的一组道具;

JDK5.0开始Sun引进了一个全新的关键字enum来定义一个枚举类:

public abstract class enum extends Object implements Serializable Comparable<T>

下面是一个典型的枚举类的写法:

public enum FruitEnum {
ORANGE, BANANA, APPLE
};

1.FruitEnum枚举类很像特殊的class,其枚举值(ORANGE, BANANA, APPLE)是FruitEnum的类对象(类实例):
   而且这些枚举值都是public static final的,也就是我们经常所定义的常量方式,因此枚举类中的枚举值最好全部大写。

2.我们声明的枚举类都是类库中Enum类的子类(java.lang.Enum<E>),它们继承了这个Enum中的许多有用的方法。

3.enum 不能使用 extends 关键字继承其他类,因为 enum 已经继承了 java.lang.Enum(java继承的单一性)。

4.测试:

package enumtest;

public class EnumTest {

    public static void main(String[] args) {
        // TODO Auto-generated method stub

        EnumTest enumTest = new EnumTest();
        
        System.out.println("-------------------------");
        enumTest.tesFruitEnum(FruitEnum.BANANA);
        System.out.println("-------------------------");
        enumTest.testEnumIndex();
        System.out.println("-------------------------");
        enumTest.testFruitEnumValues();
    }

    /**
     * 定义一个枚举类型
     */
    public enum FruitEnum {
        ORANGE, BANANA, APPLE
    };
    
    /**
     * 
     * 通过“枚举名.值”取得枚举中的值,可配合switch语句使用
     */
    private void tesFruitEnum(FruitEnum fruitEnum) {
        switch (fruitEnum) {
        case ORANGE:
            System.out.println("I am an ORANGE.");
            break;
        case BANANA:
            System.out.println("I am a BANANA.");
            break;
        case APPLE:
            System.out.println("I am an APPLE.");
            break;
        default:
            System.out.println("I am not FruitEnum.");
            break;
        }
    }
    
    /**
     * 枚举的索引位置,默认从0开始
     */
    private void testEnumIndex()
    {
        System.out.println(FruitEnum.ORANGE.name()+","+FruitEnum.ORANGE.ordinal());
        System.out.println(FruitEnum.BANANA.name()+","+FruitEnum.BANANA.ordinal());
        System.out.println(FruitEnum.APPLE.name()+","+FruitEnum.APPLE.ordinal());
    }

    /**
     * FruitEnum枚举中的值
     */
    private void testFruitEnumValues() {
        for(FruitEnum fruitEnum:FruitEnum.values())
        {
            System.out.println(fruitEnum);
        }
    }
}

 运行结果:

-------------------------
I am a BANANA.
-------------------------
ORANGE,0
BANANA,1
APPLE,2
-------------------------
ORANGE
BANANA
APPLE

posted on 2016-04-15 09:44  Android9527  阅读(173)  评论(0编辑  收藏  举报