枚举类
- 简介
- 类的对象是有限个的,例如:星期:(星期1-星期7)
- 定义一组常量时,强烈建议使用枚举类
- 如果枚举类只有一个对象,那么可以作为单例模式实现
枚举类的使用
- 自定义枚举类
//jkd1.5以前实现枚举类
package com.bixiangdong.enum1;
public class Demo01 {
}
//自定义枚举类
class Season{
//声明Season对象的属性private final
private final String seasonName;
private final String seasonDesc;
//私有化类的构造器,并给对象属性赋值
private Season(String seasonName,String seasonDesc){
this.seasonName=seasonName;
this.seasonDesc=seasonDesc;
}
//提供当前枚举类的多个对象,public static final
public static final Season SPRING = new Season("春天","这是春天");
public static final Season SUMMER = new Season("夏天","这是夏天");
public static final Season AUTUME = new Season("秋天","这是秋天");
public static final Season WINTER = new Season("冬天","这是冬天");
//获取枚举类对象的属性
public String getSeasonName() {
return seasonName;
}
public String getSeasonDesc() {
return seasonDesc;
}
@Override
public String toString() {
return "Season{" +
"seasonName='" + seasonName + '\'' +
", seasonDesc='" + seasonDesc + '\'' +
'}';
}
}
- enum关键字
public class Demo02 {
}
//自定义枚举类,enum创建的枚举类自动继承,Enum
enum Season1{
//提供当前枚举类的多个对象,简化了一些配置但本质还是public static final
SPRING("春天","这是春天"),
SUMMER("夏天","这是夏天"),
AUTUME("秋天","这是秋天"),
WINTER("冬天","这是冬天");
//声明Season对象的属性private final
private final String seasonName;
private final String seasonDesc;
//私有化类的构造器,并给对象属性赋值
private Season1(String seasonName,String seasonDesc){
this.seasonName=seasonName;
this.seasonDesc=seasonDesc;
}
//获取枚举类对象的属性
public String getSeasonName() {
return seasonName;
}
public String getSeasonDesc() {
return seasonDesc;
}
@Override
public String toString() {
return "Season{" +
"seasonName='" + seasonName + '\'' +
", seasonDesc='" + seasonDesc + '\'' +
'}';
}
}
- Enum类的主要方法
- values();
- valueOf();
- toString();
package com.bixiangdong.enum1;
public class Demo02 {
public static void main(String[] args) {
//返回枚举类的所有对象,一数组的形式存储
Season1[] values = Season1.values();
//根据字符串获取对象的枚举对象 valueOf中大小写敏感
Season1 spring = Season1.valueOf("SPRING");
System.out.println(spring);
//toString();返回当前对象名称
System.out.println(Season1.AUTUME.toString());
}
}
//自定义枚举类,enum创建的枚举类自动继承,Enum
enum Season1{
//提供当前枚举类的多个对象,简化了一些配置但本质还是public static final
SPRING("春天","这是春天"),
SUMMER("夏天","这是夏天"),
AUTUME("秋天","这是秋天"),
WINTER("冬天","这是冬天");
//声明Season对象的属性private final
private final String seasonName;
private final String seasonDesc;
//私有化类的构造器,并给对象属性赋值
private Season1(String seasonName,String seasonDesc){
this.seasonName=seasonName;
this.seasonDesc=seasonDesc;
}
//获取枚举类对象的属性
public String getSeasonName() {
return seasonName;
}
public String getSeasonDesc() {
return seasonDesc;
}
// @Override
// public String toString() {
// return "Season{" +
// "seasonName='" + seasonName + '\'' +
// ", seasonDesc='" + seasonDesc + '\'' +
// '}';
// }
}
- 实现接口的枚举类
package com.bixiangdong.enum1;
public class Demo03 {
}
interface Test{
void show();
}
//枚举类实现接口并重写方法,第一种重写的方法
enum Season2 implements Test{
//提供当前枚举类的多个对象,简化了一些配置但本质还是public static final
SPRING("春天","这是春天"),
SUMMER("夏天","这是夏天"),
AUTUME("秋天","这是秋天"),
WINTER("冬天","这是冬天");
//声明Season对象的属性private final
private final String seasonName;
private final String seasonDesc;
//私有化类的构造器,并给对象属性赋值
private Season2(String seasonName,String seasonDesc){
this.seasonName=seasonName;
this.seasonDesc=seasonDesc;
}
//获取枚举类对象的属性
public String getSeasonName() {
return seasonName;
}
public String getSeasonDesc() {
return seasonDesc;
}
@Override
public void show() {
System.out.println("第一种重写的方法");
}
}
//枚举类实现接口并重写方法,第一种重写的方法
enum Season3 implements Test{
//提供当前枚举类的多个对象,简化了一些配置但本质还是public static final
SPRING("春天","这是春天"){
@Override
public void show() {
System.out.println("对象中重写,每个调用的都不一样");
}
},
SUMMER("夏天","这是夏天"){
@Override
public void show() {
System.out.println("对象中重写,每个调用的都不一样");
}
},
AUTUME("秋天","这是秋天"){
@Override
public void show() {
System.out.println("对象中重写,每个调用的都不一样");
}
},
WINTER("冬天","这是冬天"){
@Override
public void show() {
System.out.println("对象中重写,每个调用的都不一样");
}
};
//声明Season对象的属性private final
private final String seasonName;
private final String seasonDesc;
//私有化类的构造器,并给对象属性赋值
private Season3(String seasonName,String seasonDesc){
this.seasonName=seasonName;
this.seasonDesc=seasonDesc;
}
//获取枚举类对象的属性
public String getSeasonName() {
return seasonName;
}
public String getSeasonDesc() {
return seasonDesc;
}
}