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。

  • 相关阅读:
    解决 ThinkPHP5 RCE 在PHP7下,不能使用包含的问题
    文件上传 之 条件竞争
    ThinkPHP3.2.4 order方法注入
    Mysql 不能使用逗号的情况
    MSSQL 注入笔记
    ThinkPHP 5.0.15中的update注入漏洞
    Thinkphp5 由Request导致的RCE漏洞版本小结
    即学即用,轻松搞定这些选择器!(上)
    JavaScript的使用你知道几种?(上)
    前端修炼の道 | <div> 标签简介
  • 原文地址:https://www.cnblogs.com/mokpiet/p/14156904.html
Copyright © 2011-2022 走看看