• java枚举类型


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

    应用场景: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

  • 相关阅读:
    SQL语句在数据库中可以执行在mybatis执行不了
    spring_08aop原理及案例
    spring_07使用spring的特殊bean、完成分散配置
    spring_06装配bean_2
    spring_05装配bean
    spring_03ApplicationContext三种经常用到的实现
    spring_04bean的生命周期
    spring_02工具及接口案例
    深入理解Ribbon之源码解析
    深入理解Feign之源码解析
  • 原文地址:https://www.cnblogs.com/Android9527/p/5394158.html
Copyright © 2020-2023  润新知