枚举(enumeration)
由于有些类的对象是固定的,比如季节类只有四个对象,人类有男人和女人两个对象,,对于这些类,要体现提的对象是固定值就需要用到“枚举类型”
四季类有四个对象
Season spring = new Season("春天", "温暖");
Season summer = new Season("夏天","炎热的" );
Season autumn = new Season("秋天", "凉爽");
Season winter = new Season("冬天", "寒冷");
枚举是一组常量的集合,枚举可以理解为一组特殊的类,里面只包含特定的对象 。
实现枚举
(1)自定义
1.将构造器私有化,防止外部new一个新的对象
private Season(String name,String desc) {
this.name=name;
this.desc = desc;
}
2.set方法不对外公开
3.在类的内部直接创建固定的对象
public static Season spring = new Season("春天", "温暖");
public static Season summer = new Season("夏天","炎热的" );
public static Season autumn = new Season("秋天", "凉爽");
public static Season winter = new Season("冬天", "寒冷");
4.枚举对象的名字通常大写
(2)使用enum关键字
1.使用enum关键字修饰类替代class
public enum Season {
}
2.常量对象写在类的最前面,多个对象之间用逗号隔开
public enum Season {
SPRING ("春天","温暖"),SUNMER("夏天","炎热的"),AUTEMN("秋天", "凉爽"),WINTER("冬天", "寒冷");
private String name;
private String desc;
以上是两种创建枚举类的两种方法。
在使用enum关键字创建对象的时候默认继承Enum类,所以就可以使用Enum类的默认成员方法
1.成员方法name
name方法可以获取当前枚举常量的名称
public static void main(String[] args) {
Season spring = Season.SPRING;
System.out.println(spring.name());
}
2.成员方法ordinal
ordinal方法可以返回当前对象的位置号(从0 开始)
public static void main(String[] args) {
Season spring = Season.SPRING;
System.out.println(spring.ordinal());
}
3.成员方法 values
values方法返回当前枚举中的所有常量,返回一个数组
public static void main(String[] args) {
Season spring = Season.SPRING;
Season[] values = Season.values();
for(Season season:values) {
System.out.println(season);
}
}
4.成员函数valueOf
valueOf函数能够将字符串转换成枚举对象,但是字符串必须是已有的常量名
public static void main(String[] args) {
Season springsS = Season.valueOf("SPRING");
System.out.println("Springs");
}
5.成员函数compareTo
compareTo函数能够比较两个枚举常量的位置号
System.out.println(Season.AUTEMN.compareTo(Season.SPRING));