Enum类中的常用方法 [Java]
作者:互联网
Enum类中的常用方法
Enum类的全类名 : java.lang.Enum
首先我们要知道enum关键字是定义枚举类的, 而使用enum关键字定义的枚举类都直接继承与java.lang.Enum类
这里我们就Enum类中的最常用的三个方法来进行一个说明
-
这里我们要对Enum类中的方法进行举例分析,这里我们先给出一个相关的使用enum关键字定义的枚举类
package 枚举类.枚举类的定义.enum关键字定义枚举类; //通过enum关键字定义枚举类 public enum Season1 { /* 1. 通过enum关键字定义枚举类时,首先我们上来就要提供当前枚举类的对象, 多个对象之间使用,(逗号)隔开,末尾对象使用;(封号结束) 注意: 这里创建对象的时候省略了很多不重要的东西比如: new关键字, 变量类型 ,构造方法名 补充: 这里如果是使用无参构造器创建对象的话那么()也可以省略 */ SPRING("春天","春暖花开"), SUMMER("夏天","夏日炎炎"), AUTUMN("秋天","秋高气爽"), WINTER("冬天","冰天雪地"); /* 后面的步骤就和我们自定义枚举类时一样 */ /* 2. 声明Season1类的属性(常量), 使用private final关键字共同修饰 */ private final String seasonName; private final String seasonDesc; /* 3. 私有化类的构造器,并给对象的属性赋值 注意: 使用构造器赋值的方式可以让我们的每个对象都唯一存在一个常量 */ private Season1(String seasonName , String seasonDesc){ this.seasonName = seasonName; this.seasonDesc = seasonDesc; } /* 4. 其他诉求: 4.1 获取枚举类对象的属性 */ public String getSeasonName(){ return this.seasonName; } public String getSeasonDesc(){ return this.seasonDesc; } /* 4.2 根据需求提供toString()方法 注意: 这里我们即使不重写toString()方法,输出此枚举类对象的时候也不会输出地址值,因为我们使用enum关键字定义的枚举类都是直接继承了 java.lang.Enum类,而Enum类中重写了继承自Object类的toString()方法,Enum类中重写的toString()方法输出的就是枚举类对象所对应的常量名 */ @Override public String toString() { return "Season1{" + "seasonName='" + seasonName + '\'' + ", seasonDesc='" + seasonDesc + '\'' + '}'; } }
下面就是我们对这三个方法的分析
- toString()
- 返回调用这个方法的枚举类对象的对象名
- 所以我们使用enum关键字定义的枚举类没有特殊要求其实可以不用重写toString()方法
- 这个方法是一个非静态方法
- 返回调用这个方法的枚举类对象的对象名
eg:
//这个Season1类就是我们上面给出的使用enum关键字定义的枚举类
Season1 summer = Season1.SUMMER;
/*
这里我们对summer对象输出的时候会默认的调用toString()方法,但是这里我们还是显示的进行了调用
这里输出的结果为: SUMMER
*/
System.out.println(summer.toString());
- values()
- 通过枚举类直接调用此方法返回枚举类的对象数组, 也就是将枚举类的对象以一个一个数组元素合并成一个数组返回
- 这个方法是一个静态方法
- 该方法可以很方便地遍历所有枚举值
eg:
/*
这里的Season1类是通过enum关键字定义的枚举类,而使用enum关键字定义的枚举类都直接继承于Enum类,所以这里通过Season1类调用的values()方法其实是声明在Enum类中的
*/
Season1 [] values = Season1.values();
for(int i = 0; i < values.length ; i++){
System.out.println(values[i]);
}
eg:
- 在学习多线程中我们曾经学到Thread类中有一个内部类State,State类就是通过enum关键字定义的枚举类,在State类中定义了线程运行的几种状态
Thread.State [] values = Thread.State.values();
for(int i = 0; i < values.length ; i++){
System.out.println(values[i])
}
- valueof(String objName)
- 使用枚举类调用此方法.可以把一个字符串转换为对应的同名的枚举类对象
- 这个方法是一个静态方法
注意: 要求字符串必须是调用此方法的枚举类中的对象名,如果不是则会抛出一个运行时异常 : IllegalArgumentException(非法的参数异常)
eg:
/*
通过Season1类调用valueof()方法创建了一个WINTER对象并赋给了Season1类型的引用winter
*/
Season1 winter = Season1.valueof("WINTER");
//这里输出的自然就是winter引用对应的枚举类对象的对象名 : WINTER
System.out.println(winter);
标签:enum,Java,Enum,关键字,枚举,values,Season1,类中 来源: https://blog.csdn.net/m0_57001006/article/details/122725350