一、什么是枚举
枚举是列出某些有穷集合的所有成员,枚举在日常生活中很常见,例如表示星期的SUNDAY、MONDAY、TUESDAY、WEDNESDAY、THURSDAY、FRIDAY、SATURDAY就是一个枚举。
二、JAVA中的枚举
在JDK1.5之前需要我们自定义枚举类;
JDK 1.5 新增的 enum 关键字用于定义枚举类
若枚举只有一个对象, 则可以作为一种单例模式的实现方式。
三、什么时候使用枚举类
当类的对象只有有限个,确定的时候建议使用枚举类;
当需要定义一组常量时,强烈建议使用枚举类;
例如:
- 就职状态:Busy、Free、Vocation、Dimission
- 订单状态:Nonpayment(未付款)、Paid(已付款)、Delivered(已发货)、 Return(退货)、Checked(已确认)Fulfilled(已配货)、
- 季节:Spring(春节)…Winter(冬天)
四、枚举类的使用
4.1自定义枚举类
- 声明Sex对象的属性:private final修饰
- 私有化类的构造器,并给对象属性赋值
- 提供当前枚举类的多个对象:public static final的
- 其他诉求1:获取枚举类对象的属性(添加get方法)
- 其他诉求2:提供toString()
public class Sex {
//1.声明Season对象的属性:private final修饰
private final String sex;
private final String hairLength;
//2.私化类的构造器,并给对象属性赋值
private Sex(String sex,String hairLength){
this.sex = sex;
this.hairLength = hairLength;
}
//3.提供当前枚举类的多个对象:public static final的
public static final Sex male = new Sex("男人","短发");
public static final Sex female = new Sex("女人","长发");
//4.其他诉求1:获取枚举类对象的属性
public String getSex() {
return sex;
}
public String getHairLength() {
return hairLength;
}
//5.其他诉求2:提供toString()
@Override
public String toString() {
return "Sex{" +
"sex='" + sex + '\'' +
", hairLength='" + hairLength + '\'' +
'}';
}
}
4.2通过enum关键字定义枚举类
- 使用enum关键字定义枚举类
- 提供当前枚举类的对象,多个对象之间用",“隔开,末尾对象”;"结束
- 声明Sex对象的属性:private final修饰
- 私有化类的构造器,并给对象属性赋值
- 其他诉求1:获取枚举类对象的属性
public enum Sex {
//1.提供当前枚举类的对象,多个对象之间用","隔开,末尾对象";"结束
MALE("男人","短发"),
FEMALE("女人","长发");
//2.声明Sex对象的属性:private final修饰
private final String sex;
private final String hairLength;
//3.私有化类的构造器,并给对象属性赋值(可以省略Private)
Sex(String sex, String hairLength) {
this.sex = sex;
this.hairLength = hairLength;
}
//4.其他诉求1:获取枚举类对象的属性
public String getSex() {
return sex;
}
public String getHairLength() {
return hairLength;
}
}
五、枚举类的常用方法
1.toString():返回枚举类对象的名称
2.values():返回所的枚举类对象构成的数组
3.valueOf(String objName):返回枚举类中对象名是objName的对象。
public class MyTest {
public static void main(String[] args) {
//1.toString():返回枚举类对象的名称
Sex male = Sex.MALE;
System.out.println(male.toString());
System.out.println("****************");
//2.values():返回所的枚举类对象构成的数组
Sex[] sexes = Sex.values();
System.out.println(Arrays.toString(sexes));
System.out.println("****************");
//3.valueOf(String objName):返回枚举类中对象名是objName的对象。
Sex female = Sex.valueOf("FEMALE");
System.out.println(female);
}
}
结果如下: