zoukankan      html  css  js  c++  java
  • 【Java】 枚举类

    • 如果要定义一个枚举类:
      public enum Size { SAMLL, MEDIUM, LARGE, EXTRA, EXTRA_LARGE};
      • 实际上,这个声明定义的类型是一个类,它刚好有4个实例,在此尽量不要构造新对象。
      • 因此,在比较两个枚举类型的值时,永远不需要调用equals,而直接使用“==”就可以了。
    • 如果需要的话,可以在枚举类型中添加一些构造器、方法和域。当然,构造器知识在构造枚举常量的时候被调用。下面是一个示例:
    public enum Size
    {
        SMALL("S"), MEDIUM("M"), LARGE("L"),EXTRA_LARGE("XL");
        
        private String abbreviation;
    
        private Size(String abbreviation) {this.abbreviation = abbreviation;}
        public String getAbbrevation() {return abbrevation;}
    }
    
    • 所有的枚举类型都是Enum类的子类。它们继承了这个类的许多方法,其中最有用的一个是toString,这个方法能够返回枚举常量名。例如,Size.SMALL.toString()将返回字符串"SMALL".
      toString的逆方法是静态方法valueOf。例如,语句:
    Size s = Enum.valueOf(Size.class, "SMALL");
    

    将s设置为Size.SMALL.

    • 每个枚举类型都有一个静态的value方法,它将返回一个包含全部枚举值的数组,而且该数组中的元素严格保持其在enum中声明的顺序,因此你可以在循环中使用values返回的数组。例如,如下调用:
    Size[] values = Size.values();
    

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

    • ordinal方法返回enum声明中枚举常量的位置,位置从0开始计数。例如,Size.MEDIUM.ordinal()返回1.
    • 可以向enum中添加方法。如果打算定义自己的方法,那么必须在enum序列化的最后添加一个分号。同时,Java要求你必须先定义enum实例。如果在定义enum实例之前定义了任何方法或属性,那么在编译时就会得到错误。
    • enum中构造器与普通方法没有什么区别,因为有少许限制之外,enum就是普通的类。所以,我们可以使用enum做许多事情。
    • 一般将enum的构造器声明为private,但对于它的访问属性而言,并没有什么实质性的变化,因为(即使不声明为private)我们只能在enum定义的内部使用期构造器创建enum实例。一旦enum定义结束,编译器就不允许我们在使用其构造器来创建任何实例楽
  • 相关阅读:
    extjs4 数据实体模型
    WPF实现MDI窗体的方法
    WPF中图形表示语法详解(Path之Data属性语法
    Wpf DataGrid 数据绑定 排序 删除
    WPF: 使用TestApi模拟用户输入
    extjs4 事件处理
    WPF触发器
    XPath语法 在C#中使用XPath示例
    WPF 4 中DataGrid的模板列做双向数据绑定
    extjs4 标准面板
  • 原文地址:https://www.cnblogs.com/vincently/p/6016929.html
Copyright © 2011-2022 走看看