美文网首页
枚举2--java25(02/18/2016)

枚举2--java25(02/18/2016)

作者: Girl_endless | 来源:发表于2016-02-18 17:27 被阅读17次

    一、枚举类
    1.如何自定义枚举类
    2.如何使用enum关键字定义枚举类:将枚举类对象相同部分删掉,同时中间用逗号分隔。
    ①常用的方法:values() valueOf(String name)
    ②如何让枚举类实现接口:可以让不同的枚举类对象调用被重写的抽象方法,执行的效果不同。(相当于让每个对象重写抽象方法)
    (实现方法:在相邻枚举对象中间用大括号包住,重写抽象方法)
    必须在枚举类的第一行声明枚举类对象。

    枚举类和普通类的区别:
    使用 enum 定义的枚举类默认继承了 java.lang.Enum 类;
    枚举类的构造器只能使用 private 访问控制符;
    枚举类的所有实例必须在枚举类中显式列出(, 分隔 ; 结尾). 列出的实例系统会自动添加 public static final 修饰;
    JDK 1.5 中可以在 switch 表达式中使用Enum定义的枚举类的对象作为表达式, case 子句可以直接使用枚举值的名字, 无需添加枚举类作为限定。

    枚举类的主要方法:
    values()方法:返回枚举类型的对象数组。该方法可以很方便地遍历所有的枚举值。
    valueOf(String str):可以把一个字符串转为对应的枚举类对象。要求字符串必须是枚举类对象的“名字”。如不是,会有运行时异常。

    package com.atguigu.java1;
    public class TestSeason1 {
    
        public static void main(String[] args){
            Season1 spring = Season1.SPRING;
            System.out.println(spring);
            spring.show();
            System.out.println(spring.getSeasonName());
            
            System.out.println();
            //1.values():
            Season1[] seasons = Season1.values();
            for(int i = 0;i < seasons.length;i++){
                System.out.println(seasons[i]);
            }
            //2.valuesOf(String name):str里传入的是字符串,输出的是对象;
            //要求传入的形参name是枚举类对象的名字,否则报IllegalArgumentException
            
            String str = "SPRING";
            Season1 sea = Season1.valueOf(str);
            System.out.println(sea);
            System.out.println();
            
            //也可以输出一下线程的生命周期
            Thread.State[] states = Thread.State.values();
            for (int i = 0; i < states.length; i++) {
                System.out.println(states[i]);
            }
        }
    
    }
    
    interface Info{
        void show();
    }
    //枚举类
    enum Season1 implements Info{
        SPRING("spring","春暖花开"){
            public void show(){
                System.out.println("春天在哪里啊?");//实现枚举对象的不同show()方法
            }
        },
        SUMMER("summer","夏日炎炎"){
            public void show(){
                System.out.println("夏天在这里");
            }
        },
        AUTOMN("automn","秋高气爽"){
            public void show(){
                System.out.println("秋天是分手的季节");
            }
        },
        WINTER("winter","白雪皑皑"){
            public void show(){
                System.out.println("冬天里的一把火");
        }
        };//enum自己默认一些东西,可以把相同的部分删掉
        
        private final String seasonName;
        private final String seasonDesc;
        
        private Season1(String seasonName, String seasonDesc){
            this.seasonName = seasonName;
            this.seasonDesc = seasonDesc;
        }
        
        public void show(){
            System.out.println("这是一个季节");
        }
        public String getSeasonName() {
            return seasonName;
        }
        public String getSeasonDesc() {
            return seasonDesc;
        }
        
        @Override
        public String toString() {
            return "Season [seasonName=" + seasonName + ", seasonDesc="
                    + seasonDesc + "]";
        }
        
    }
    

    相关文章

      网友评论

          本文标题:枚举2--java25(02/18/2016)

          本文链接:https://www.haomeiwen.com/subject/xuwmkttx.html