枚举

一、枚举类:
在某些情况下,一个类的对象是有限而且固定的。
例如季节类,只能有春夏秋冬四个对象,那么季节
类就称为枚举类。
在jdk1.5之前需要我们手动实现枚举类:
1.构造器使用private修饰
2.属性使用private final修饰(私有常量)
3.枚举类的所有实例都使用public static final修饰:
  (全局常量的形式存在)


二、
在jdk1.5开始新增了enum关键字来定义枚举类:
1.使用关键字enum定义类,不再是class关键字;
  但是还是类结构,就是一个特殊的类。
2.使用关键字enum定义的枚举类默认继承了java.lang.Enum类,
  而不是Obejct类;因此枚举类不能再显示的继承其他父7类(
  枚举类不能在有其他的继承关系);
  枚举类默认继承的java.lang.Enum类实现了Serializable和
  Comparator接口。
3.非抽象的枚举类默认是final的,所以枚举类不能派生子类。

4.枚举类的构造器只能使用private修饰,即使定义构造器时省略
  修饰符也默认是private。
5.枚举类的所有实例必须在枚举类的第一行显示的列出,且是以,
  分隔;结束,这些枚举类的实例也被称为枚举值;如果不在枚举
  类中列出枚举类的实例,那么该枚举类就不存在任何实例(因为
  其构造器是private的);且在枚举类中列出的实例系统会自动添
  加public static final修饰符,所以无需显示添加。


三、
6.所有的枚举类都提供了一个values()方法,该方法可以很方便的
  遍历出所有的枚举值(枚举类的实例)。

四、
在jdk1.5中还可以在switch语句中使用枚举类对象作为表达式,case
子句可以直接使用枚举值的名字,无需添加枚举类作为限定:

五、
若枚举类只有一个枚举值,则可以作为一种单例模式的实现方式:


枚举类的属性总结:
1.枚举类对象的属性值不允许被修改,所以必须定义为private final
2.枚举类中使用private final修饰的属性一般在new其构造器创建
  对象时在构造器中为其初始化值。
3.若枚举类显示的定义了带参的构造器,则在枚举类中列出枚举值时
  也必须对应的传入参数,表示调用对用的构造器创建枚举类对象。

六、
和普通java类一样,枚举类也可以实现一个或多个接口;
若需要每个枚举值(枚举类对象)在调用实现的接口的方法
中呈现不同的行为方式,则可以让每个枚举值分别来实现
接口的方法。

七、Enum类的常用方法:
    枚举类默认都继承自Enum类,所以Enum类中的方法所有的枚举类
    也都具备:
 1>boolean | equals(Object obj):当指定对象等于此枚举值时,返回true。
 2>int | hashCode():返回枚举值的哈希码。
 
 /*
 class类继承的Object类的toString()默认是输出类名和当前对象的哈希值;
 enum类继承的Enum类的toString()默认是输出当前枚举值的名称。

 当然toString()都是可以重写的。
 */
 3>String | toString():返回枚举值的名称,它包含在声明中。
 
 4>String | name():返回此枚举值的名称,在其枚举类声明中对其进行声明。
 5>static <T extends Enum>  T | valueOf(Class enumType,String name):
   返回指定枚举类型中的指定名称的枚举值

其他参考:https://blog.csdn.net/pan_junbiao/article/details/85257445

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值