以前的时候知道enum,但是真心不怎么用,在实际开发中,经常会用到以下代码:
感觉好繁琐,不好用,在一次偶然的机会中再次遇到enum,彻底解决了这个情况。在以后开发中再也不会使用上述累赘的代码了。
下面来讲讲前面的劣势吧:有什么不好了,大家都这样用了很长时间了,没什么问题啊。
但其没有看到代码的人并不知道你的企图,抛弃你所有旧的public static final常量吧。
其实在只有偶尔使用一个的情况下,还是非常可取的
enum优势:
1. 可以创建一个enum类,把它看做一个普通的类。除了它不能继承其他类了。(java是单继承,它已经继承了Enum),可以添加其他方法,覆盖它本身的方法
2.他可以带多个的参数,比map啥的只能带一个的好用多了(map带多个比较繁琐.用起来不方便)
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多路分发
protected final static String XJ = "XJ"; protected final static String YHK = "YHK"; protected final static String PQ = "PQ"; protected final static String HYK = "HYK"; protected final static String TG = "TG"; protected final static String GJK = "GJK"; protected final static String YFK = "YFK"; protected final static String ZZ = "ZZ"; protected final static String ZQ = "ZQ"; protected final static String YGQ = "YGQ";
感觉好繁琐,不好用,在一次偶然的机会中再次遇到enum,彻底解决了这个情况。在以后开发中再也不会使用上述累赘的代码了。
public class enum1 { public enum Pay{ XJ("XJ"),YHK("YHK"),PQ("PQ"),HYK("HYK"),TG("TG"),GJK("GJK"), YFK("YFK"),ZZ("ZZ"),ZQ("ZQ"),YGQ("YGQ"); private String name; // 构造方法 private Pay(String name) { this.name = name; } // 覆盖方法 @Override public String toString() { return this.name; } } public static void main(String[] args) { System.out.println(Pay.GJK.toString()); getpayan(Pay.GJK); } private static void getpayan(Pay pay){ switch (pay) { case GJK: System.out.println(1); break; default: break; } } }
下面来讲讲前面的劣势吧:有什么不好了,大家都这样用了很长时间了,没什么问题啊。
但其没有看到代码的人并不知道你的企图,抛弃你所有旧的public static final常量吧。
其实在只有偶尔使用一个的情况下,还是非常可取的
enum优势:
1. 可以创建一个enum类,把它看做一个普通的类。除了它不能继承其他类了。(java是单继承,它已经继承了Enum),可以添加其他方法,覆盖它本身的方法
2.他可以带多个的参数,比map啥的只能带一个的好用多了(map带多个比较繁琐.用起来不方便)
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多路分发
发表评论
-
文件上传 下载 解析 相对路径
2014-12-16 16:29 2098有点坑吧,弄这么一个简单的东西弄了一天多,身边还有大神指导着, ... -
发送邮件
2014-10-15 11:29 664import org.apache.commons.m ... -
红黑树
2014-07-24 13:51 617红黑树 红黑树是一种自平衡二叉查找树,是在计算机科学中用到的 ... -
Java中的instanceof关键字
2014-07-21 11:14 441Java中的instanceof关键字 [size=larg ... -
Comparable接口
2014-07-21 11:01 496因为在学红黑树的时候用到了Comparable接口,故此学习一 ... -
二叉查找树
2014-07-15 10:57 601二叉排序树(Binary Sort Tree)又称二叉查找树( ... -
二叉树的三种遍历
2014-07-10 11:28 608前序遍历(DLR) 前序 ... -
Java中如何写代码实现无标题无边框的窗体能够用鼠标拖动改变窗口大小
2014-01-23 17:16 1556import java.awt.*; import java ... -
Swing基础
2014-01-10 10:22 415JFrame: frame = new JFrame(); ... -
游戏音效素材大全下载 - 3000首高清无损-按分类整理
2014-01-09 18:03 482因为我看到国外很多素材,但是国内不多,我希望来做好这个事情。 ... -
Swing 键盘练习
2014-01-09 17:59 587在swing界面中写一个键盘,使用前记得放置背景图片 imp ... -
JAVA的Socket的聊天器
2014-01-09 11:06 466这是刚开始学习java网络编程的时候做的一个东东,,局域网聊天 ... -
驱动打印
2013-12-27 15:16 647java驱动打印代码: PrintTest.print(pr ... -
java程序打包
2013-12-27 15:17 516打包一般分为两种,一种是B/S架构打包,一种是C/S打包,大同 ... -
读取文件夹下的所有文件
2013-12-20 13:19 470文章来源:http://www.blogjava.net/ba ... -
实现天气预报功能
2013-12-02 10:30 562import java.io.BufferedReader; ... -
JMF播放AVI格式的视频
2013-12-02 10:26 737public class Conver { publ ... -
JMF视频播放器
2013-12-02 10:24 1131import java.awt.BorderLayout; ...
相关推荐
同时,枚举值可以通过`.ToString()`方法转换为字符串,或者通过`Enum.Parse()`和`Enum.TryParse()`方法将字符串转换回枚举值。 五、枚举与其他类型的转换 枚举类型可以与它的底层类型进行转换。`unchecked`上下...
接下来,我们将深入探讨Java枚举类型的使用方法及其相关知识点。 1. **枚举的声明与初始化** 枚举类型的声明方式类似于类,但以`enum`关键字开头。例如: ```java enum Color { RED, GREEN, BLUE } ``` 这里...
### Enum的深度解析与应用技巧 ...总之,掌握`Enum`的用法及其高级技巧,对于提升代码质量和开发效率具有重要意义。在日常编程实践中,灵活运用`Enum`的各种特性,将有助于构建更加健壮、高效的应用系统。
Java enum 的用法详解 Java enum(枚举)是一种特殊的数据类型,用于定义一组固定的常量。从 JDK 1.5 开始,Java 引入了 enum 机制,解决了传统的常量定义方式的不足。 用法一:常量 在 JDK 1.5 之前,我们定义...
枚举类型(enum)在编程语言中,如C语言,是一种强大的工具,用于定义一组具有固定数量和特定名称的常量。这些常量通常代表一些有限的、互斥的值集合,比如颜色、星期几或者状态等。枚举类型不仅提高了代码的可读性...
它们支持多种高级用法,包括构造函数、方法、switch语句、继承接口等,是编写高质量代码的重要工具。在处理固定的、有限的、不可变的数据集时,使用枚举往往比使用常量或字符串更合适,也更易于理解和维护。
在编程中,`enum`(枚举)类型是用来定义一组命名的整数常量,它在C++中被广泛使用。然而,在某些情况下,我们可能会遇到`enum`类型的重定义问题,这通常发生在包含不同库或者头文件时,因为这些库可能已经定义了...
下面我们将深入探讨enum的使用方法。 1. **定义枚举** 定义枚举的关键字是`enum`,例如: ```java public enum WeekDays { MON, TUE, WED, THU, FRI, SAT, SUN; } ``` 这里我们创建了一个名为`WeekDays`的...
本篇将通过"Java Enum使用Demo源码"深入探讨Java枚举的用法。 首先,枚举在Java中是一个类,可以通过`enum`关键字来声明。例如,我们可以创建一个表示星期的枚举类型: ```java public enum WeekDay { MONDAY, ...
为了确保这一点,可以在定义枚举时使用`Object.freeze()`方法来冻结对象,使其不可变: ```javascript const Fruit = Object.freeze({ orange: 1, banana: 2, peach: 3, strawberry: 4 }); ``` **枚举类型的...
用法 local Enum = require " enum " -- Enums can be created like so: local Number = Enum ( " Zero " , " One " , " Two " , " Three " ) -- To control the starting value of an enum, the first value can be...
枚举(Enum)在Java中是一种特殊的类,用于定义固定的常量集合,它提供了一种安全、类型化的常量表示方式。以下是对Enum的详细讲解: 1. **基本枚举定义**: ```java enum Color {BLUE, RED, GREEN;} ``` 这是...
### 关于 `typedef` 的用法总结 #### 1. 定义类型的别名 `typedef` 最常见的用途之一就是定义一种类型的别名。这种方式不仅仅实现了宏替换的功能,还能够帮助开发者更清晰地表达代码意图,并减少代码中的潜在错误...
Swift中的枚举使用`enum`关键字定义,每个枚举值通过`case`关键字声明。例如,我们可以创建一个表示姓氏的枚举: ```swift enum Surname { case 张 case 王 case 李 case 赵 } ``` 可以通过`.张`等方式...
安装composer require tebru/enum用法要使用,扩展AbstractEnum并实现getConstants()方法。 class DirectionEnum extends AbstractEnum{ const NORTH = 'north'; const EAST = 'east'; const SOUTH = 'south'; ...
目录介绍特征安装用法设置一个MappedValueRepresentable枚举使用MappedValueCollectionRepresented 使用MappedEnum类型的可编码枚举在ESet中使用OptionSet中的EnumSet 将EnumSet转换为Enum数组使用...
wise_enum 因为反思使你明智,而不是聪明 wise_enum是C ++ wise_enum的独立智能枚举库。 它支持C ++中的智能枚举类所期望的所有标准功能: 告诉您枚举数 让您遍历所有枚举值 将string转换为enum,并将enum转换为...
在Laravel框架中,"enum"(枚举)是一种实用的工具,用于限制特定属性或方法的值只能是预定义的一组。PHP在版本8.0中引入了对枚举的支持,这使得在 Laravel 开发中更加方便地处理固定选项的数据类型。本教程将深入...
本文实例总结了python模拟enum枚举类型的方法。分享给大家供大家参考。具体分析如下: python中没有enum枚举类型,可能python认为这玩意压根就没用,下面列举了三种方法模拟enum枚举类型 方法1. 使用自定义类 class...