Java中枚举类

#笔记

枚举类:有限个对象

自定义枚举类code:

public class TestEnumeration {

    public static void main(String[] args) {
        // TODO 自动生成的方法存根
        Season spring = Season.SPRING;
        spring.show();
        Season winter = Season.WINTER;
        winter.show();

    }

}

//枚举类
class Season{
    //提供类的属性,声明为private final
    private final String seasonName;
    private final String seasonDesc;
    
    
    //声明为final的属性,在构造中初始化
    private Season(String seasonName,String seasonDesc) {
        this.seasonName = seasonName;
        this.seasonDesc = seasonDesc;    
    }
    
    public String getSeasonName() {
        return seasonName;
    }

    public String getSeasonDesc() {
        return seasonDesc;
    }
    
    //创建枚举对象
    public static final Season SPRING = new Season("春天","这是春天");  
    public static final Season WINTER = new Season("冬天","这是冬天");  
    public static final Season SUMMER = new Season("夏天","这是夏天");  
    public static final Season AUTUMN = new Season("秋天","这是秋天");  
            
    public void show() {
        System.out.println("这是"+this.getSeasonName());
    }
    
    
}

    
    
    

使用enum创建枚举类:

public class TestEnumerationEnum {

    public static void main(String[] args) {
        SeasonEnum  spring = SeasonEnum.SPRING;
        spring.show();
        
        
        //values方法可以返回枚举类的对象(数组的形式返回)
        SeasonEnum[]  sea  = SeasonEnum.values();
        for(Object obj : sea) {
            System.out.println(obj);
        }
        
        //.values(String name)  返回枚举类的对象
        String str  = "SPRING"; //不能随意乱写,否则报异常
        SeasonEnum sea1 = SeasonEnum.valueOf(str);
        System.out.println(sea1);  //return SeasonEnum [seasonName=春天, seasonDesc=这是春天]
    }

}


//enum创建枚举类
enum SeasonEnum{
    
    //将枚举类的对象放到类的最上面并与自定义的简化为:
    SPRING("春天","这是春天"),  
    WINTER("冬天","这是冬天"),
    SUMMER("夏天","这是夏天"),  
    AUTUMN("秋天","这是秋天");  
    
    
    //提供类的属性,声明为private final
    private final String seasonName;
    private final String seasonDesc;
    
    
    //声明为final的属性,在构造中初始化
    private SeasonEnum(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 "SeasonEnum [seasonName=" + seasonName + ", seasonDesc=" + seasonDesc + "]";
    }

    public void show() {
        System.out.println("这是"+this.getSeasonName());
    }
    
    
}

枚举类实现接口:

public class TestEnumerationInter {

    public static void main(String[] args) {
        SeasonEnum winter = SeasonEnum.WINTER;
        winter.show();  //return 这是冬天
        
        SeasonEnum sea = SeasonEnum.valueOf("SUMMER");
        sea.show();   //这是夏天

    }
}


//定义一个接口
interface EnumTest{
    void show();
}


//自定义枚举类
enum SeasonEnum implements EnumTest{
    
    //将枚举类的对象放到类的最上面并与自定义的简化为:
    //第二种实现接口
    SPRING("春天","这是春天"){
        public void show() {
            System.out.println("Hi,春天");
        }
    },  
    WINTER("冬天","这是冬天"){
        public void show() {
            System.out.println("Hi,冬天");
        }
    },
    SUMMER("夏天","这是夏天"){
        public void show() {
            System.out.println("Hi,夏天");
        }
    },  
    AUTUMN("秋天","这是秋天"){
        public void show() {
            System.out.println("Hi,秋天");
        }  
    };
    
    //提供类的属性,声明为private final
    private final String seasonName;
    private final String seasonDesc;
    
    
    //声明为final的属性,在构造中初始化
    private SeasonEnum(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 "SeasonEnum [seasonName=" + seasonName + ", seasonDesc=" + seasonDesc + "]";
    }

    
/*    第一种实现接口------这个是常规的的实现
    public void show() {
        System.out.println("这是"+this.getSeasonName());
    }
*/    
    
}

猜你喜欢

转载自www.cnblogs.com/sixfiv/p/11426204.html