Java十六篇:枚举

Java 枚举(enum)

  • Java 枚举是一个特殊的类,一般表示一组常量,比如一年的 4 个季节,一个年的 12 个月份,一个星期的 7 天,方向有东南西北等,Java 枚举类使用 enum 关键字来定义,各个常量使用逗号 , 来分割,通常将常量在接口中,在JDK1.5版本新增枚举类型后就逐渐取代了这种常量定义方式

特点:

1.自定义的枚举类都是继承java.lang.Enum类的 2.枚举类的每一个成员都是枚举类的一个实例 3.枚举类无法继承,因为它已经继承了java.lang.Enum类 4.在编译时就能确定枚举成员的类型 5.通常,将一组相关的常量值聚合在一起构建一个枚举类。比如,颜色、星期、订单类型、支付渠道等等一些含义相近的常量组合在一起创建一个枚举类 单个的,彼此关联性不大的一些值还是用常量比较好

  • 枚举的主要作用是用于定义有限个数对象的一种结构(多例设计),枚举就属于多例设计,并且其结构要比多例设计更加简单。利用enum的关键字,可以实现枚举的定义。在Java中枚举类中可以定义构造方法、成员变量以及其他方法。

定义:

一种数据类型,只包含自定义的特定数据,是一组有共同特性的数据的集合。

创建需要enum关键字,如:

public class Singleton{
private static final Singleton INSTANCE = new Singleton();

private Singleton(){}

public static Singleton getSingleton(){
return INSTANCE;
}
}

你可以调用Singleton.getInstance()方法来获得实例对象。

上面的两种方式就是懒汉式和恶汉式单利的创建,但是无论哪一种,都不如枚举来的方便。而且传统的单例模式的另外一个问题是一旦你实现了serializable接口,他们就不再是单例的了。但是枚举类的父类【Enum类】实现了Serializable接口,也就是说,所有的枚举类都是可以实现序列化的,这也是一个优点。

总结:

1.使用的是enum关键字而不是class。

2.多个枚举变量直接用逗号隔开。

3.枚举变量最好大写,多个单词之间使用”_”隔开(比如:INT_SUM)。

4.定义完所有的变量后,以分号结束,如果只有枚举变量,而没有自定义变量,分号可以省略(例如上面的代码就忽略了分号)。

5.在其他类中使用enum变量的时候,只需要【类名.变量名】就可以了,和使用静态变量一样。

  • 可以创建一个enum类,把它看做一个普通的类。除了它不能继承其他类了。(java是单继承,它已经继承了Enum),可以添加其他方法,覆盖它本身的方法
  • switch()参数可以使用enum
  • values()方法是编译器插入到enum定义中的static方法,所以,当你将enum实例向上转型为父类Enum是,values()就不可访问了。解决办法:在Class中有一个getEnumConstants()方法,所以即便Enum接口中没有values()方法,我们仍然可以通过Class对象取得所有的enum实例

6.无法从enum继承子类,如果需要扩展enum中的元素,在一个接口的内部,创建实现该接口的枚举,以此将元素进行分组。达到将枚举元素进行分组。

7.enum允许程序员为eunm实例编写方法。所以可以为每个enum实例赋予各自不同的行为。


Java十六篇:枚举



本篇文章来源于微信公众号: 小刘Java之路

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/11254.html

(0)
小半的头像小半

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!