栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java中的枚举简单用法

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java中的枚举简单用法

声明 enum

枚举使用enum关键字来声明,把所有可能的值依次罗列出来,其所有元素默认都是被public static final修饰,即可直接使用了。

public enum WeekDay {
    MON,TUS,WED,THU,FRI,SAT,SUN
}

注意:必须将所有值罗列在该类所有成员的最前面,且如果后面没有其他成员时,可以将末尾的分号;省略不写,否则不可省略。

构造函数 1.构造函数只能是私有权限
  • private写与不写都是等价的
public enum WeekDay {
    MON,TUS,WED,THU,FRI,SAT,SUN;
    private WeekDay(){}
}

等价于

public enum WeekDay {
    MON,TUS,WED,THU,FRI,SAT,SUN;
    WeekDay(){}
}
  • 直接罗列的值相当于是调用了无参构造,即上面的代码也相当于这样
public enum WeekDay {
    MON(),TUS(),WED(),THU(),FRI(),SAT(),SUN(){};
    private WeekDay(){}
}
2.可以重载,必须提供无参构造 自带方法 values()返回所有罗列出的值
private static void f2() {
    WeekDay[] values = WeekDay.values();
    for (WeekDay value : values) {
        System.out.println(value);
    }
}
MON
TUS
WED
THU
FRI
SAT
SUN
valueOf(String name)根据名称来获取

前提是确实存在,否则抛出Exception in thread "main" java.lang.IllegalArgumentException: No enum constant vip.sjxq.test.WeekDay.SU1N at java.lang.Enum.valueOf(Enum.java:238)

private static void f3() {
    WeekDay w = WeekDay.valueOf("SUN");
    System.out.println(w);
}
可以有抽象成员 1.抽象方法

如果定义了抽象方法,则每个罗列出来的值都要去实现定义的抽象方法,如我们定义一个抽象的nextDay()方法

public enum WeekDay {
    MON() {
        @Override
        WeekDay nextDay() {
            return TUE;
        }
    },TUE() {
        @Override
        WeekDay nextDay() {
            return null;
        }
    },WED() {
        @Override
        WeekDay nextDay() {
            return THU;
        }
    },THU() {
        @Override
        WeekDay nextDay() {
            return FRI;
        }
    },FRI() {
        @Override
        WeekDay nextDay() {
            return SAT;
        }
    },SAT() {
        @Override
        WeekDay nextDay() {
            return SUN;
        }
    },SUN(){
        @Override
        WeekDay nextDay() {
            return MON;
        }
    };
    private WeekDay(){}
    abstract WeekDay nextDay();
}

也可以再重写toString()方法

public enum WeekDay {
    MON() {
        @Override
        WeekDay nextDay() {
            return TUE;
        }

        @Override
        public String toString() {
            return "星期一";
        }
    }, TUE() {
        @Override
        WeekDay nextDay() {
            return null;
        }

        @Override
        public String toString() {
            return "星期二";
        }
    }, WED() {
        @Override
        WeekDay nextDay() {
            return THU;
        }

        @Override
        public String toString() {
            return "星期三";
        }
    }, THU() {
        @Override
        WeekDay nextDay() {
            return FRI;
        }

        @Override
        public String toString() {
            return "星期四";
        }
    }, FRI() {
        @Override
        WeekDay nextDay() {
            return SAT;
        }

        @Override
        public String toString() {
            return "星期五";
        }
    }, SAT() {
        @Override
        WeekDay nextDay() {
            return SUN;
        }

        @Override
        public String toString() {
            return "星期六";
        }
    }, SUN() {
        @Override
        WeekDay nextDay() {
            return MON;
        }

        @Override
        public String toString() {
            return "星期天";
        }
    };

    private WeekDay() {
    }

    abstract WeekDay nextDay();
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/862903.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号