传统方法缺陷
缺点:变量数量不确定,不能满足需求,需要枚举类实现
需要一组常量的集合,一种特定的类,其中包含一组有限的特定的对象
public class Enumeration01 {
public static void main(String[] args) {
Season spring = new Season("春天", "温暖");
Season summer = new Season("夏天", "炎热");
Season autumn = new Season("秋天", "凉爽");
Season winter = new Season("冬天", "寒冷");
// 缺点:变量数量不确定,不能满足需求,需要枚举类实现
Season other = new Season("~~天", "~~~~");
}
}
class Season{
private String name;
private String desc;
public Season(String name, String desc) {
this.name = name;
this.desc = desc;
}
}
自定义枚举类
步骤:1.构造器私有化,防止直接new出来
2.去掉set方法,防止属性被修改
3.在Season内部直接创建固定的对象
4.优化,加final修饰符
public class Enumeration02 {
public static void main(String[] args) {
System.out.println(Season.SPRING);
System.out.println(Season.SUMMER);
System.out.println(Season.AUTUMN);
System.out.println(Season.WINTER);
}
}
class Season{
private String name;
private String desc;
public static final Season SPRING = new Season("春天", "温暖");
public static final Season SUMMER = new Season("夏天", "炎热");
public static final Season AUTUMN = new Season("秋天", "凉爽");
public static final Season WINTER = new Season("冬天", "寒冷");
private Season(String name, String desc) {
this.name = name;
this.desc = desc;
}
public String getName() {
return name;
}
public String getDesc() {
return desc;
}
@Override
public String toString() {
return "Season类中的内容:{" +
"名字:'" + name + '\'' +
", 描述:'" + desc + '\'' +
'}';
}
}
使用枚举类
无参构造器创建枚举对象,可以简写
枚举对象必须写在枚举类的行首,不能继承(默认继承Enum),可以实现多个接口
public class Enumeration03 {
public static void main(String[] args) {
System.out.println(Season2.SPRING);
System.out.println(Season2.SUMMER);
System.out.println(Season2.AUTUMN);
System.out.println(Season2.WINTER);
}
}
enum Season2{
/* 1.构造器私有化,防止直接new出来
2.去掉set方法,防止属性被修改
3.在Season内部直接创建固定的对象
4.优化,加final修饰符
5.无参构造器创建枚举对象,可以简写
6.枚举对象必须写在枚举类的行首,不能继承(默认继承Enum),可以实现多个接口
*/
// public static final Season SPRING = new Season("春天", "温暖");
// public static final Season SUMMER = new Season("夏天", "炎热");
// public static final Season AUTUMN = new Season("秋天", "凉爽");
// public static final Season WINTER = new Season("冬天", "寒冷");
SPRING("春天", "温暖"),
SUMMER("夏天", "炎热"),
AUTUMN("秋天", "凉爽"),
WINTER("冬天", "寒冷"),
WHAT;
//无参构造器创建枚举对象,可以简写
private String name;
private String desc;
private Season2(String name, String desc) {
this.name = name;
this.desc = desc;
}
private Season2(){}
public String getName() {
return name;
}
public String getDesc() {
return desc;
}
@Override
public String toString() {
return "Season类中的内容:{" +
"名字:'" + name + '\'' +
", 描述:'" + desc + '\'' +
'}';
}
}
枚举方法
- name
- ordinal (序数)
- values (生成数组)
- value of (查找)
- compareTo (比较)
package com.fu;
/**
* @author 付广建
* @version 1.0
*/
public class EnumMethod {
public static void main(String[] args) {
System.out.println("name =" + Season2.SPRING.name());
System.out.println("number =" + Season2.SPRING.ordinal());
Season2[] values = Season2.values();
System.out.println("===for遍历:===");
for (Season2 value : values) {
System.out.println("number = " + value);
}
System.out.println("查找:" + Season2.valueOf("SPRING"));
System.out.println("比较器比较(前减后):" + Season2.SPRING.compareTo(Season2.WINTER));
}
}
name =SPRING
number =0
===for遍历:===
number = Season类中的内容:{名字:'春天', 描述:'温暖'}
number = Season类中的内容:{名字:'夏天', 描述:'炎热'}
number = Season类中的内容:{名字:'秋天', 描述:'凉爽'}
number = Season类中的内容:{名字:'冬天', 描述:'寒冷'}
查找:Season类中的内容:{名字:'春天', 描述:'温暖'}
比较器比较(前减后):-3
Process finished with exit code 0