您的位置 首页 java

Java的enum的用法详解

定义

enum 的全称为 enumeration, 是 JDK 1.5 中引入的新特性,存放在 java.lang 包中。创建 枚举类型 要使用 enum 关键字,隐含了所创建的类型都是 java.lang.Enum 类的子类(java.lang.Enum 是一个 抽象类 )。

本文接下来给大家详细介绍一下java enum的用法。

用法一:常量

之前,我们通常定义常量都是: public static fianl…. 。自从有了枚举,可以把相关的常量分组到一个枚举类型里,而且枚举提供了比常量更多的方法。

用法二:switch

JDK1.6之前的switch语句只支持int, char ,enum类型,使用枚举,能让我们的代码可读性更强。

用法三:向枚举中添加新方法

假如想要自定义自己的方法,那么必须在enum实例序列的最后添加一个分号。而且 Java 要求必须先定义 enum 实例。

用法四:覆盖枚举的方法

通过toString()方法覆盖枚举。

用法五:实现接口

所有的枚举都继承自java.lang.Enum类。由于Java 不支持多继承,所以枚举对象不能再继承其他类。

用法 :关于枚举集合的使用

java.util.EnumSet和java.util.EnumMap是两个枚举集合。EnumSet保证集合中的元素不重复;EnumMap中的 key是enum类型,而value则可以是任意类型。

通常定义常量方法和枚举定义常量方法区别

1.首先,它不是类型安全的,你必须确保是int抛弃你所有旧的public static final常量

2. 可以创建一个enum类,把它看做一个普通的类。除了它不能继承其他类了。

3. switch()参数可以使用enum了

4. values()方法是编译器插入到enum定义中的static方法,所以,当你将enum实例向上转型为父类Enum是,values()就不可访问了。解决办法:在 Class 中有一个getEnumConstants()方法,所以即便Enum接口中没有values()方法,我们仍然可以通过Class对象取得所有的enum实例

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

6. 使用EnumSet代替标志。enum要求其成员都是唯一的,但是enum中不能删除添加元素。

7. EnumMap的key是enum,value是任何其他Object对象。

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

9. 使用enum的职责链(Chain of Responsibility) .这个关系到设计模式的职责链模式。以多种不同的方法来解决一个问题。然后将他们链接在一起。当一个请求到来时,遍历这个链,直到链中的某个解决方案能够处理该请求。

10. 使用enum的状态机

11. 使用enum多路分发

文章来源:智云一二三科技

文章标题:Java的enum的用法详解

文章地址:https://www.zhihuclub.com/194412.shtml

关于作者: 智云科技

热门文章

网站地图