枚举类型enum

1、关键字enum可以将一组具名的值得有限集合创建为一种新的类型,而这些具名的值可以作为常规的程序组件使用。
2、枚举的基本特征

enum shrubbery{ground,crawling,hanging}
public class EnumClass{
    for(shrubbery s : shrubbery.values());
    {
     System.out.println(s);
    }
}

方法:
ordinal() 返回一个int值,这是enum实例在声明时候的次序
equals() == 都可以比较enum实例
compareTo() 相等返回0,在目标值前面,返回负数,在目标值后边返回正数。
name() 返回实例名字,与toString()效果相同
getDeclaringClass() 返回实例所属的enum类
valueOf() 返回给定名字的enum实例

2、向enum添加新方法
除了不能继承一个enum外,基本上可以将enum看成是一个类,可以向enum添加方法,

public enum OzWitch{
WEST(ONE,TWO ,THREE),
NORTH(FOUR,FIVE,SIX),
EAST(SEVEN,EIGHT,NINE),
SOUTH(TEN,EV);
private String desc;
private OzWitch(String desc){ //构造器
this.desc=desc;
}

}

如果定义自己的方法,,必须在实例序列最后一个添加分号,必须先定义enum实例,在定义方法和属性,enum构造器和普通类的构造器几乎相同,除了少许限制,enum就是一个类。

2.1覆盖enum中的方法

5、实现而非继承
所有enum继承自Enum,因此不能再继承其他类,只能用实现

7、使用接口组织枚举
在一个借口内部,创建实现该接口的枚举,以此将元素进行分组,可以达到将枚举元素分类组织的目的
例如:你想用enum表示不用类别的食物,同时还向每个enum保持food类型

public interface Food{
    enum Appe implements Food{
    salad,soup,spring_rols;
}
    enum mainCourse implements Food{
    lasagne,burrito,pad_thai;
}
    enum coffee implements Food{
    black_coffee,decaf_coffee;
}
}

8、使用EnumSet替代标志
由于enum不能添加或者删除元素,像是一个无用的集合

引入enumset是替代传统的基于int的“位标识”这种标志用来表示开关信息,使用这种信息操作的是bit,而不是bit想要表达的概念,难以理解。
有点:哎说明一个二进制位是否存在时候,具有很友好的表达能力,性能也好 报警器的位置

9、EnumMap
enumMap是一个特殊的map,他要求其中的key必须来自一个enum,只能讲enum实例作为键来操作put()方法,其他操作与一般的map差不多。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值