枚举类
枚举类的定义
枚举类的实现
自定义枚举类
/**
* 一、枚举类的使用
* 1. 枚举类的理解:类的对象是有限的,确定的。我们称之为枚举类。
* 2. 当需要定义一组常量时,强烈建议使用枚举类。
* 3. 如果枚举类只有一个对象,则可以作为单例模式的实现方式
*
* 二、如何定义枚举类
* 1. jdk5.0 之前自定义枚举类
* 2. jdk5.0 可以使用enum关键字定义
*/
public class SeasonTest {
public static void main(String[] args) {
Season spring = Season.SPRING;
System.out.println(spring); // Season{seasonName='春天', seasonDesc='春暖花开'}
}
}
/**
* 自定义枚举类
*/
class Season{
// 1、声明Season的对象属性:private final修饰
private final String seasonName;
private final String seasonDesc;
// 2、私有化构造方法
private Season(String seasonName, String seasonDesc){
this.seasonName = seasonName;
this.seasonDesc = seasonDesc;
}
// 3、提供当前枚举类的多个对象:public static final修饰
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("冬天","冰天雪地");
// 4、其他诉求,获取枚举类的对象属性
public String getSeasonName() {
return seasonName;
}
public String getSeasonDesc() {
return seasonDesc;
}
// 5、toString
@Override
public String toString() {
return "Season{" +
"seasonName='" + seasonName + '\'' +
", seasonDesc='" + seasonDesc + '\'' +
'}';
}
}
使用enum定义枚举类
/**
* 一、枚举类的使用
* 1. 枚举类的理解:类的对象是有限的,确定的。我们称之为枚举类。
* 2. 当需要定义一组常量时,强烈建议使用枚举类。
* 3. 如果枚举类只有一个对象,则可以作为单例模式的实现方式
*
* 二、如何定义枚举类
* 1. jdk5.0 之前自定义枚举类
* 2. jdk5.0 可以使用enum关键字定义
*/
public class SeasonTest2 {
public static void main(String[] args) {
Season2 winter = Season2.WINTER;
System.out.println(winter); // WINTER
System.out.println(winter.getSeasonDesc()); // 冰天雪地
}
}
/**
* 使用enum举类
*/
enum Season2 {
// 1、提供当前枚举类的对象,多个对象之间以”,“隔开(放在开头)
SPRING("春天","春暖花开"),
SUMMER("夏天","烈日炎炎"),
AUTUMN("秋天","秋风萧瑟"),
WINTER("冬天","冰天雪地");
// 2、声明Season的对象属性:private final修饰
private final String seasonName;
private final String seasonDesc;
// 3、私有化构造方法
private Season2(String seasonName, String seasonDesc){
this.seasonName = seasonName;
this.seasonDesc = seasonDesc;
}
// 4、其他诉求,获取枚举类的对象属性
public String getSeasonName() {
return seasonName;
}
public String getSeasonDesc() {
return seasonDesc;
}
}
枚举类中常用方法
package enumdemo;
/**
* @author chaolong
* @date 2020/11/15 16:14
* @Email hechaolong123@163.com
*/
/**
* 一、枚举类的使用
* 1. 枚举类的理解:类的对象是有限的,确定的。我们称之为枚举类。
* 2. 当需要定义一组常量时,强烈建议使用枚举类。
* 3. 如果枚举类只有一个对象,则可以作为单例模式的实现方式
*
* 二、如何定义枚举类
* 1. jdk5.0 之前自定义枚举类
* 2. jdk5.0 可以使用enum关键字定义
*/
public class SeasonTest2 {
public static void main(String[] args) {
Season2[] values = Season2.values();
for (int i = 0; i < values.length; i++) {
System.out.println(values[i]);
}
// SPRING
// SUMMER
// AUTUMN
// WINTER
Season2 summer = Season2.valueOf("SUMMER");
System.out.println(summer); // SUMMER
Season2 abc = Season2.valueOf("abc");
System.out.println(abc); // java.lang.IllegalArgumentException: No enum constant enumdemo.Season2.abc
}
}
/**
* 使用enum举类
*/
enum Season2 {
// 1、提供当前枚举类的对象,多个对象之间以”,“隔开(放在开头)
SPRING("春天","春暖花开"),
SUMMER("夏天","烈日炎炎"),
AUTUMN("秋天","秋风萧瑟"),
WINTER("冬天","冰天雪地");
// 2、声明Season的对象属性:private final修饰
private final String seasonName;
private final String seasonDesc;
// 3、私有化构造方法
private Season2(String seasonName, String seasonDesc){
this.seasonName = seasonName;
this.seasonDesc = seasonDesc;
}
// 4、其他诉求,获取枚举类的对象属性
public String getSeasonName() {
return seasonName;
}
public String getSeasonDesc() {
return seasonDesc;
}
}
枚举类实现接口
public class SeasonTest3 {
public static void main(String[] args) {
Season3 spring = Season3.valueOf("SPRING");
spring.show(); // 春天在哪里
}
}
/**
* enum枚举类实现接口
*/
enum Season3 implements Info{
// 1、提供当前枚举类的对象,多个对象之间以”,“隔开(放在开头)
// 每个对象对应各自的show 方法
SPRING("春天", "春暖花开"){
@Override
public void show() {
System.out.println("春天在哪里");
}
},
SUMMER("夏天", "烈日炎炎"){
@Override
public void show() {
System.out.println("夏天。。。。。。。。");
}
},
AUTUMN("秋天", "秋风萧瑟"){
@Override
public void show() {
System.out.println("秋天不回来。。。。");
}
},
WINTER("冬天", "冰天雪地"){
@Override
public void show() {
System.out.println("冬天。。。。。。。");
}
};
// 2、声明Season的对象属性:private final修饰
private final String seasonName;
private final String seasonDesc;
// 3、私有化构造方法
private Season3(String seasonName, String seasonDesc) {
this.seasonName = seasonName;
this.seasonDesc = seasonDesc;
}
// 4、其他诉求,获取枚举类的对象属性
public String getSeasonName() {
return seasonName;
}
public String getSeasonDesc() {
return seasonDesc;
}
}
// 自定义接口
interface Info {
void show();
}