zoukankan      html  css  js  c++  java
  • java枚举类的常见用法

    枚举类型(Enumerated Type) 很早就出现在编程语言中,它被用来将一组类似的值包含到一种类型当中。而这种枚举类型的名称则会被定义成独一无二的类型描述符,在这一点上和常量的定义相似。不过相比较常量类型,枚举类型可以为申明的变量提供更大的取值范围。

    java中的Enum类型更像是一个特殊的class,它可以有自己的数据域和方法。

    java中的Enum类型有如下特征:

    1、他不能有public构造函数,用来保证其无法实例化。

    2、所有的枚举类型是public static final

    3、Enum重载了toString方法,因此我们如果调用Color.BLUE.toString()默认返回字符串”BLUE”.   

    4、Enum提供了一个valueOf方法,这个方法和toString方法是相对应的。调用.valueOf(“BLUE”)将返回Color.BLUE.因此我们在自己重写toString方法的时候就要注意到这一点,一把来说应该相对应地重写valueOf方法。   

    5、Enum还提供了values方法,这个方法使你能够方便的遍历所有的枚举值。   

    6、Enum还有一个oridinal的方法,这个方法返回枚举值在枚举类种的顺序,这个顺序根据枚举值声明的顺序而定,这里Color.Red.ordinal()返回0。   


    用法一:常量

    import java.util.Arrays;
    
    /**
     * Created by N3verL4nd on 2016/11/21.
     */
    
    enum Color{
        RED, GREEN, BLUE
    }
    
    public class HelloWorld {
        public static void main(String[] args) {
            Color color = Color.valueOf("RED");
            System.out.println(color.toString());
    
            Color[] arr = Color.values();
            System.out.println(Arrays.toString(arr));
        }
    }
    

    用法二:switch

    import java.util.Arrays;
    
    /**
     * Created by N3verL4nd on 2016/11/21.
     */
    
    enum Color{
        RED, GREEN, BLUE
    }
    
    public class HelloWorld {
        public static void main(String[] args) {
            Color color = Color.BLUE;
            switch (color){
                case RED:
                    System.out.println("RED");
                    break;
                case GREEN:
                    System.out.println("GREEN");
                    break;
                case BLUE:
                    System.out.println("BLUE");
                    break;
                default:
                    break;
            }
        }
    }
    

    用法三:向枚举中添加新方法

    /**
     * Created by N3verL4nd on 2016/11/21.
     */
    
    enum Color{
        RED("this is red"), GREEN("this is green"), BLUE("this is blue");
    
        private String desc;
    
        private Color(String desc){
            this.desc = desc;
        }
    
        public String getDesc() {
            return desc;
        }
    }
    
    public class HelloWorld {
        public static void main(String[] args) {
            Color red = Color.RED;
            System.out.println(red + ": " + red.getDesc());
        }
    }
    

    用法四:覆盖枚举的方法

    比如重写toString方法:
    /**
     * Created by N3verL4nd on 2016/11/21.
     */
    
    enum Color{
        RED("this is red"), GREEN("this is green"), BLUE("this is blue");
    
        private String desc;
    
        private Color(String desc){
            this.desc = desc;
        }
    
        public String getDesc() {
            return desc;
        }
    
        @Override
        public String toString() {
            switch (this){
                case RED:
                    return "Color.RED";
                case GREEN:
                    return "Color.GREEN";
                case BLUE:
                    return "Color.BLUE";
                default:
                    return "";
            }
        }
    }
    
    public class HelloWorld {
        public static void main(String[] args) {
            Color red = Color.RED;
            System.out.println(red.toString() + ": " + red.getDesc());
        }
    }
    






    参考:
    http://blog.lichengwu.cn/java/2011/09/26/the-usage-of-enum-in-java/
    http://www.cnblogs.com/happyPawpaw/archive/2013/04/09/3009553.html
    https://www.ibm.com/developerworks/cn/java/j-lo-enum/

    Keep it simple!
    作者:N3verL4nd
    知识共享,欢迎转载。
  • 相关阅读:
    獲得當年的周別
    動態更改GridView 的Page 頁碼的Style
    發送Mail(帶Table)
    C# DataSet和DataTable详解
    利用JS动态创建html控件并在后台实现取值
    ArrayList与string、string[]的转换代码
    js操作listbox的方法
    ASP.NET中Get和Post的用法 Request.QueryString,Request.Form,Request.Params的区别 [转]
    window.showModalDialog关闭子页面刷新父页面
    FTPClient upload & download class
  • 原文地址:https://www.cnblogs.com/lgh1992314/p/6616294.html
Copyright © 2011-2022 走看看