枚举类

枚举类:就是对象的实例个数是确定的(例如:单例模式),也就说我们在创建枚举类的时候,会对构造器进行设置

一、自定义创建枚举类

 1 package com.atguigu.java1;
 2 
 3 public class TestSeason {
 4     public static void main(String[] args) {
 5         Season spring = Season.SPRING;
 6         System.out.println(spring);
 7         spring.show();
 8         System.out.println(spring.getSeasonName());
 9     }
10 }
11 //枚举类
12 class Season{
13     //1.提供类的属性,声明为private final 
14     private final String seasonName;
15     private final String seasonDesc;
16     //2.声明为final的属性,在构造器中初始化。
17     private Season(String seasonName,String seasonDesc){
18         this.seasonName = seasonName;
19         this.seasonDesc = seasonDesc;
20     }
21     //3.通过公共的方法来调用属性
22     public String getSeasonName() {
23         return seasonName;
24     }
25     public String getSeasonDesc() {
26         return seasonDesc;
27     }
28     //4.创建枚举类的对象:将类的对象声明public static final
29     public static final Season SPRING = new Season("spring", "春暖花开");
30     public static final Season SUMMER = new Season("summer", "夏日炎炎");
31     public static final Season AUTUMN = new Season("autumn", "秋高气爽");
32     public static final Season WINTER = new Season("winter", "白雪皑皑");
33     @Override
34     public String toString() {
35         return "Season [seasonName=" + seasonName + ", seasonDesc="
36                 + seasonDesc + "]";
37     }
38     public void show(){
39         System.out.println("这是一个季节");
40     }
41 }

二、使用 enum 关键字创建枚举类


 (必须将生命的对象放在最前面,同时去掉重复的部分)并且之间用逗号隔开。其他与我们之前创建时一致的。

 1 //枚举类
 2 enum Season1{
 3     SPRING("spring", "春暖花开"),
 4     SUMMER("summer", "夏日炎炎"),
 5     AUTUMN("autumn", "秋高气爽"),
 6     WINTER("winter", "白雪皑皑");
 7     
 8     private final String seasonName;
 9     private final String seasonDesc;
10     
11     private Season1(String seasonName,String seasonDesc){
12         this.seasonName = seasonName;
13         this.seasonDesc = seasonDesc;
14     }
15     public String getSeasonName() {
16         return seasonName;
17     }
18     public String getSeasonDesc() {
19         return seasonDesc;
20     }
21     
22     @Override
23     public String toString() {
24         return "Season [seasonName=" + seasonName + ", seasonDesc="
25                 + seasonDesc + "]";
26     }
27 }

三、枚举类中主要使用的两个方法

1   //1.values():已数组的方式,获取所有的枚举成员
2     Season1[] seasons = Season1.values();
3     for(int i = 0;i < seasons.length;i++){
4       System.out.println(seasons[i]);
5     }
6     //2.valueOf(String name):要求传入的形参name是枚举类对象的名字,获取枚举对象。
7     //否则,报java.lang.IllegalArgumentException异常
8     String str = "WINTER";
9     Season1 sea = Season1.valueOf(str);

四、实现接口


特殊之处在于,当每一对象需要单独实现 show 方法时,可以通过{}的形式,来完成需求。

 1 interface Info{
 2     void show();
 3 }
 4 //枚举类
 5 enum Season1 implements Info{
 6     SPRING("spring", "春暖花开"){
 7         public void show(){
 8             System.out.println("春天在哪里?");
 9         }
10     },
11     SUMMER("summer", "夏日炎炎"){
12         public void show(){
13             System.out.println("生如夏花");
14         }
15     },
16     AUTUMN("autumn", "秋高气爽"){
17         public void show(){
18             System.out.println("秋天是用来分手的季节");
19         }
20     },
21     WINTER("winter", "白雪皑皑"){
22         public void show(){
23             System.out.println("冬天里的一把火");
24         }
25     };
posted @ 2020-11-15 13:19  Java程序员进阶  阅读(119)  评论(0编辑  收藏  举报