枚举

通过自定义枚举类型再引出使用enum来定义枚举类型,使用enum来定义枚举简化了程序,并且提供了values()、valueOf()方法

一、 自定义枚举类型

二、       

  /*
*
自定义枚举:(季节类)
*
一、与常规定义类一样,定义季节类的属性(也要不可变),方法,
*
二、将构造器私有,并且通过构造器可以传入所有的属性,(方便后面创建对象)
*
三、创建枚举对象,对象也需要不可改变
*
与常规定义类的不同:一、在类中直接创建了对象
*                 
二、私有化构造方法
*                  
三、属性定义为不可变 ,创建的对象也不可变
* */
public class Season {
    //属性
   
private final String name;//季节名称
   
private final String desc;//季节描述
   
private Season(String name,String desc){
        this.name=name;
        this.desc=desc;
    }
    public String getName() {
        return name;
    }
    public String getDesc() {
        return desc;
    }
    //创建枚举对象,权限为public
   
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("冬天","白雪皑皑");

}

 

三、 使用enum来定义枚举类型

通过上面的代码我们可以看到,在创建对象时代码大量重复,而使用enum后就优化了这一个问题,并且使用enum后对象必须放在类的前面,对象之间用逗号分隔,最后一个用分号

public enum Season {
    //创建枚举对象
   
SPRING("春天","春暖花开"),
    SUMMER("夏天","夏日炎炎"),
    AUTUMN("秋天","秋高气爽"),
    WINTER("冬天","白雪皑皑");
    //属性
   
private final String name;//季节名称
   
private final String desc;//季节描述
   
private Season(String name,String desc){
        this.name=name;
        this.desc=desc;
    }
    public String getName() {
        return name;
    }
    public String getDesc() {
        return desc;
    }
}

四、 使用enum定义的常用方法(类方法),这些方法不需要我们去定义

1、 Season [] values();将枚举对象以数组的形式返回

2、 Season valueOf(String);返回对应的枚举对象,参数必须与对象名相对应

3、 T valueOf(Class<T>,String); 返回对应的枚举对象,参数必须与对象名相对应

五、 使用枚举类型实现接口

分两种情况:一、与其他的类实现方法一样,这样所有的枚举对象调用该方法实现的效果一直

二、所有的枚举对象都去实现该方法,这样每个对象调用该方法可以实现不同的效果,具体实现:(每个对象都要去实现)

interface Info{
    void show();
}
public enum Season implements Info{
    //创建枚举对象
   
SPRING("春天","春暖花开"){
        public void show(){}
    },
    SUMMER("夏天","夏日炎炎"){
        public void show(){}
    },
    AUTUMN("秋天","秋高气爽"){
        public void show(){}
    },
    WINTER("冬天","白雪皑皑"){
        public void show(){}
    };

 

posted on 2019-08-04 20:56  努力学习的菜鸡  阅读(190)  评论(1编辑  收藏  举报

导航