Java枚举

1.认识枚举

枚举主要用于定义一组可以使用的类对象,这样在使用时只能通过固定的几个对象来进行类的操作。例如,如果要表示日期的对象,只能有7种定义,周一至周日;如果要表示人的性别,只能有2种定义,男或女;等等。

2.枚举的使用

java中使用enum关键字定义枚举类型,如:

enum Color{//定义枚举类
	RED,GREEN,BLUE;//表示实例化对象
}

使用Color.RED可以直接取得枚举对象

3.定义其他结构

枚举属于多例设计模式,也是一个类,所以其中也可以包括属性、方法、构造方法等一系列内容。但需要注意以下两点:
1.枚举中定义的构造方法不能使用public声明,如果没有无参构造,要手工调用构造参数传递
2.枚举对象必须要放在首行,随后才可以定义属性、构造、普通方法等结构

enum Time{ //枚举5种时间实例
    DAWN(0,6),
    MORNING(6,12),
    NOON(12,14),
    AFTERNOON(14,18),
    NIGHT(18,24);

    private int starttime , endtime;
    Time(int starttime, int endtime) {//构造方法
        this.starttime = starttime;
        this.endtime = endtime;
    }

    private static Time[] time = new Time[5];
    static {
        time[0] = DAWN;
        time[1] = MORNING;
        time[2] = NOON;
        time[3] = AFTERNOON;
        time[4] = NIGHT;
    }
    public static Time getType(int currenttime){//定义普通方法
        if(DAWN.contains(currenttime)){
            return DAWN;
        }else if(MORNING.contains(currenttime)){
            return MORNING;
        }else if(NOON.contains(currenttime)){
            return NOON;
        }else if(AFTERNOON.contains(currenttime)){
            return AFTERNOON;
        }else
        return NIGHT;
    }


    public static Time getIndex(int i){//定义普通方法
        return time[i];
    }
    private boolean contains(int currenttime) {
        return starttime<=currenttime && currenttime<endtime;
    }
}

此外:枚举类含有静态方法values来获取按声明顺序的,包含所有定义值的数组
如一开始中Color的例子

for(Color c : Color.values()){//取得全部枚举对象
……
}

最后,关于枚举中定义对象括号的作用:
1.自定义枚举类中的括号是用来添加常量额外的参数
2枚举类中要添加参数对应的域(变量)
3.构造器中输入的参数要与声明的顺序、数量匹配

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值