enum类
在 JDK 1.5 之前没有枚举类型,那时候一般用接口常量来替代。而使用 java 枚举类型 enum 可以更贴近地表示这种常量。
语法要求:
任意两个枚举成员不能具有相同的名称,且它的常数值必须在该枚举的基础类型的范围之内,多个枚举成员之间使用逗号分隔;要注意必须在枚举实例的最后一个成员后添加分号
提示:如果没有显式地声明基础类型的枚举,那么意味着它所对应的基础类型是 int。
示例1:
下面代码定义了一个表示性别的枚举类型 SexEnum 和一个表示颜色的枚举类型 Color。
public enum SexEnum { male,female; } public enum Color { RED,BLUE,GREEN,BLACK; }
之后便可以通过枚举类型名直接引用常量,如 SexEnum.male、Color.RED。
Java 中的每一个枚举都继承自 java.lang.Enum 类。当定义一个枚举类型时,每一个枚举类型成员都可以看作是 Enum 类的实例(如果枚举类中定义了抽象方法,则枚举类型成员必须重写该方法;如果定义了有参数构造方法,则枚举类型成员必须传入对应的参数),这些枚举成员默认都被 final、public, static 修饰,当使用枚举类型成员时,直接使用枚举名称调用成员即可。
所有枚举实例都可以调用 Enum 类的方法,常用方法如下:
| 方法名称 | 描述 |
|---|---|
| values() | 以数组形式返回枚举类型的所有成员 |
| valueOf() | 将普通字符串转换为枚举实例 |
| compareTo() | 比较两个枚举成员在定义时的顺序 |
| ordinal() |
获取枚举成员的索引位置 |
| 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 } }