zoukankan      html  css  js  c++  java
  • 10.枚举的使用

    首先我们要知道什么是枚举,为什么要用枚举。

    我们在日常使用中,有时候,变量的取值只在一个有限的集合内。例如:销售的服装或奶茶店只有小、中、大、超大这四种尺寸。当然,可以将这些尺码分别编码为1、2、3、4或者S、M、L、X。但这样存在着一定的隐患。在变量中很有可能保存的是一个错误的值(例如0或者m)。针对这种情况,可以自定义枚举类型。这样就可以将变量的值限制在枚举内。枚举类型包括有限个命名的值。例如:

     enum Size{ SMALL,MEDIUM,LARGE,EXTRA_LARGE };

    现在可以声明这种类型的变量:

    Size s = Size.MEDIUM;

    Size类型的取值只能是这几个值得其中一个或者null值。

    实际上,这个声明定义的枚举是一个类,而它刚好有四个实例。所以在比较两个枚举类型的值时,不需要调用equals,而直接使用“==”就可以。

    如果有需要的话,可以在枚举类内添加一些构造方法。当然,构造方法只是在构造枚举常量的时候被调用。例如

    public enum Size{

       SMALL("S"),MEDIUM("M"),LARGE("L"),EXTAR_LARGE("XL");
            private String abb;
            private Size(String add){
                this.abb = abb;
            }
            public String getAbb(){return abb;};

    }

    所有的枚举类型都是Enum类的子类,他们继承这个类的许多方法。常见的就是toString(),这个方法能返回枚举常量名。例如,Size.SMALL.toString()将返回字符串"SMALL".

    toString的逆方法是静态方法valueOf().例如

    Size s = Enum.valueOf(Size.class,"SMALL");

    将s设置成Size.SMALL。

    每个枚举类型都有一个静态的values方法,他将返回一个包含全部枚举值的数组。比如:

    Size[] values = Size.values();

    返回包含元素Size.SMALL,Size.MEDIUM,Size.LARGE和Size.EXTRA_LARGE的数组。

    ordinal方法返回enum声明中枚举常量的位置,位置从0开始计算。例如 Size.MEDIUM.ordinal()返回1。

  • 相关阅读:
    我的第一个MFC小项目(2)之 初涉位图
    MFC中托盘(TRAYICON)实现
    基于顺序表哈夫曼树
    对《VC中添加WM_DEVICECHANGE消息(经典)》的补充
    C++对析构函数的误解
    我的第一个MFC小项目(4)之 位图转换(续)
    (堆的应用)Huffman赫夫曼树的建立
    一个母亲一生撒的8个谎言
    线裎里面传递参数问题解决方案
    Validating user inputs using Regular Expressions
  • 原文地址:https://www.cnblogs.com/mokpiet/p/14156904.html
Copyright © 2011-2022 走看看