黑马程序员_Java基础加强_枚举

来源:互联网 发布:vip视频解析接口源码 编辑:程序博客网 时间:2024/05/07 04:52

---------------------- ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------

一直都想在博客中记录自己学习的点点滴滴,但是每当开始书写的时候,就不知道从何写起(亲们,你们有类似的感觉吗?);其实Java的枚举就相当于这样的一个Java普通类,构造方法私有化,提供几个本类的静态的实例对象。

枚举的常用方法:

package com.itheima.enumstudy;import java.util.HashMap;import java.util.Map;/** * 枚举类型的基本使用  */public class EnumDemo {public static void main(String[] args) {System.out.println(MyEnum.SUN.nextDay());System.out.println(MyEnum1.SUN.nextDay());}}/** * 定义自己的枚举类型 * 星期枚举,获取下一天是星期几 */enum MyEnum{SUN(0),MON(1),TUE(2),WED(3),THU(4),FRI(5),SAT(6);private int dayNum;private static Map<Integer,MyEnum> map = new HashMap<Integer,MyEnum>();private MyEnum(int dayNum){this.dayNum = dayNum;}static{for(MyEnum en : MyEnum.values()){map.put(en.dayNum, en);}}public MyEnum nextDay(){int nextDayNum = (this.dayNum+1)%7;return map.get(nextDayNum);}}//两种方式,不知道那种方式更好呢?enum MyEnum1{SUN{@Overridepublic MyEnum1 nextDay() {return MON;}},MON{@Overridepublic MyEnum1 nextDay() {return TUE;}},TUE{@Overridepublic MyEnum1 nextDay() {return WED;}},WED{@Overridepublic MyEnum1 nextDay() {return THU;}},THU{@Overridepublic MyEnum1 nextDay() {return FRI;}},FRI{@Overridepublic MyEnum1 nextDay() {return SAT;}},SAT{@Overridepublic MyEnum1 nextDay() {return SUN;}};private MyEnum1(){}//带有抽象方法的枚举public abstract MyEnum1 nextDay();}
上述两种方式都能实现获取给定星期几的下一天,但是不知道哪种方式是更好的,就我个人而言,比较喜欢第一种方式,因为代码短。。因为对于Java枚举的理解不是太深,所以先看下枚举的values()方法的底层实现,但是很遗憾,在代码中没能看到values()方法,经过查询资料好像是说values()方法是编译器自动添加的方法(你怎么看?)。


---------------------- ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------

详细请查看:http://edu.csdn.net

0 0
原创粉丝点击