Java 枚举类

在 JDK 1.5 之前没有枚举类型,那时候一般用接口常量来替代。而使用 java 枚举类型 enum 可以更贴近地表示这种常量。

语法要求:

  1. 任意两个枚举成员不能具有相同的名称,且它的常数值必须在该枚举的基础类型的范围之内;
  2. 多个枚举成员之间使用逗号分隔;要注意必须在枚举实例的最后一个成员后添加分号

注意:如果没有显式地声明基础类型的枚举,那么意味着它所对应的基础类型是 int。

 示例1:

下面代码定义了一个表示性别的枚举类型 SexEnum 和一个表示颜色的枚举类型 Color。

public enum SexEnum {
  male,female;
}
public enum Color {
  RED,BLUE,GREEN,BLACK;
}

之后便可以通过枚举类型名直接引用常量,如 SexEnum.maleColor.RED


Java 中的每一个枚举都继承自 java.lang.Enum 类。

当定义一个枚举类型时,每一个枚举类型成员都可以看作是 Enum 类的实例(如果枚举类中定义了抽象方法,则枚举类型成员必须重写该方法,如果定义了有参数构造方法,则枚举类型成员必须传入对应的参数),这些枚举成员默认都被 final、public, static 修饰,当使用枚举类型成员时,直接使用枚举名称调用成员即可。

所有枚举实例都可以调用 Enum 类的方法,常用方法如下:

表 1 Enum类的常用方法
方法名称 描述
values() 以数组形式返回枚举类型的所有成员
valueOf() 将普通字符串转换为枚举实例
compareTo() 比较两个枚举成员在定义时的顺序
ordinal()

获取枚举成员的索引位置,默认从0开始  

name()

返回此枚举常量的名称,与在其枚举声明中声明的完全相同。


示例2:
import org.apache.commons.lang.StringUtils;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public enum DateFormatUtils {
    /**
     * 默认时间格式
     */
    YYYY_MM_DD_HH_MM_SS("yyyy-MM-dd HH:mm:ss"),

    YYYY_MM_DD_HH_MM("yyyy-MM-dd HH:mm"),
    /**
     * 时间格式,精确到天
     */
    YYYY_MM_DD("yyyy-MM-dd"),
    /**
     * 没有标点符号
     */
    YYYYMMDDHHMMSS("yyyyMMddHHmmss"),
    YYYYMMDD("yyyyMMdd"),
    YYYYMMDDHHMMSSSSS("yyyyMMddHHmmssSSS"),
    YYYY_MM_DD_HH_MM_SS_SCORE("yyyy-MM-dd HH:mm:ss"),

    HH_MM("HH:mm"),
    MM_DD("MM-dd");


    /**
     * 时间格式转换实例
     */
    private SimpleDateFormat format;

    DateFormatUtils(String formatStr) {
        format = new SimpleDateFormat(formatStr);
        format.setLenient(false);
    }

    /**
     * 时间对象转换成字符串
     *
     * @param date
     * @return
     * @author: chenjunsheng
     * @date 2018年4月27日
     */
    public String date2Str(Date date) {
        if (date == null) {
            return null;
        }
        return format.format(date);
    }

    /**
     * 字符串转换成时间对象
     *
     * @param date
     * @return
     * @throws ParseException
     * @author: chenjunsheng
     * @date 2018/6/5
     */
    public Date str2Date(String date) throws ParseException {
        if (StringUtils.isBlank(date)) {
            throw new NullPointerException("传进日期为空");
        }
        return format.parse(date);
    }

    public static void main(String[] args) {
        System.out.println(DateFormatUtils.YYYY_MM_DD.date2Str(new Date()));// 2021-11-06
    }

}

 

posted @ 2021-11-06 15:34  danielzzz  阅读(114)  评论(0)    收藏  举报