`

Enum用法

    博客分类:
  • Java
阅读更多
以前的时候知道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多路分发

分享到:
评论

相关推荐

    枚举语句enum用法详解

    同时,枚举值可以通过`.ToString()`方法转换为字符串,或者通过`Enum.Parse()`和`Enum.TryParse()`方法将字符串转换回枚举值。 五、枚举与其他类型的转换 枚举类型可以与它的底层类型进行转换。`unchecked`上下...

    Java枚举类型Enum的用法

    接下来,我们将深入探讨Java枚举类型的使用方法及其相关知识点。 1. **枚举的声明与初始化** 枚举类型的声明方式类似于类,但以`enum`关键字开头。例如: ```java enum Color { RED, GREEN, BLUE } ``` 这里...

    Enum的用法

    ### Enum的深度解析与应用技巧 ...总之,掌握`Enum`的用法及其高级技巧,对于提升代码质量和开发效率具有重要意义。在日常编程实践中,灵活运用`Enum`的各种特性,将有助于构建更加健壮、高效的应用系统。

    Java enum的用法详解

    Java enum 的用法详解 Java enum(枚举)是一种特殊的数据类型,用于定义一组固定的常量。从 JDK 1.5 开始,Java 引入了 enum 机制,解决了传统的常量定义方式的不足。 用法一:常量 在 JDK 1.5 之前,我们定义...

    枚举类型enum用法

    枚举类型(enum)在编程语言中,如C语言,是一种强大的工具,用于定义一组具有固定数量和特定名称的常量。这些常量通常代表一些有限的、互斥的值集合,比如颜色、星期几或者状态等。枚举类型不仅提高了代码的可读性...

    java中enum枚举的详细用法

    它们支持多种高级用法,包括构造函数、方法、switch语句、继承接口等,是编写高质量代码的重要工具。在处理固定的、有限的、不可变的数据集时,使用枚举往往比使用常量或字符串更合适,也更易于理解和维护。

    enum类型重定义解决方法

    在编程中,`enum`(枚举)类型是用来定义一组命名的整数常量,它在C++中被广泛使用。然而,在某些情况下,我们可能会遇到`enum`类型的重定义问题,这通常发生在包含不同库或者头文件时,因为这些库可能已经定义了...

    java 中enum的使用方法详解

    下面我们将深入探讨enum的使用方法。 1. **定义枚举** 定义枚举的关键字是`enum`,例如: ```java public enum WeekDays { MON, TUE, WED, THU, FRI, SAT, SUN; } ``` 这里我们创建了一个名为`WeekDays`的...

    Java Enum使用Demo源码

    本篇将通过"Java Enum使用Demo源码"深入探讨Java枚举的用法。 首先,枚举在Java中是一个类,可以通过`enum`关键字来声明。例如,我们可以创建一个表示星期的枚举类型: ```java public enum WeekDay { MONDAY, ...

    Enum.lua:Lua可用的枚举

    用法 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汇总大全详细讲解

    枚举(Enum)在Java中是一种特殊的类,用于定义固定的常量集合,它提供了一种安全、类型化的常量表示方式。以下是对Enum的详细讲解: 1. **基本枚举定义**: ```java enum Color {BLUE, RED, GREEN;} ``` 这是...

    关于typedef的用法总结

    ### 关于 `typedef` 的用法总结 #### 1. 定义类型的别名 `typedef` 最常见的用途之一就是定义一种类型的别名。这种方式不仅仅实现了宏替换的功能,还能够帮助开发者更清晰地表达代码意图,并减少代码中的潜在错误...

    详解Swift中enum枚举类型的用法

    Swift中的枚举使用`enum`关键字定义,每个枚举值通过`case`关键字声明。例如,我们可以创建一个表示姓氏的枚举: ```swift enum Surname { case 张 case 王 case 李 case 赵 } ``` 可以通过`.张`等方式...

    enum:一个简单PHP库来添加对枚举的支持

    安装composer require tebru/enum用法要使用,扩展AbstractEnum并实现getConstants()方法。 class DirectionEnum extends AbstractEnum{ const NORTH = 'north'; const EAST = 'east'; const SOUTH = 'south'; ...

    Options:有时在某些情况下,您想在OptionSet中使用Enum或希望Enum由Raw的Int类型支持,但同时也具有String标签

    目录介绍特征安装用法设置一个MappedValueRepresentable枚举使用MappedValueCollectionRepresented 使用MappedEnum类型的可编码枚举在ESet中使用OptionSet中的EnumSet 将EnumSet转换为Enum数组使用...

    wise_enum:C ++的反射枚举实现

    wise_enum 因为反思使你明智,而不是聪明 wise_enum是C ++ wise_enum的独立智能枚举库。 它支持C ++中的智能枚举类所期望的所有标准功能: 告诉您枚举数 让您遍历所有枚举值 将string转换为enum,并将enum转换为...

    Laravel开发-enum

    在Laravel框架中,"enum"(枚举)是一种实用的工具,用于限制特定属性或方法的值只能是预定义的一组。PHP在版本8.0中引入了对枚举的支持,这使得在 Laravel 开发中更加方便地处理固定选项的数据类型。本教程将深入...

    python模拟enum枚举类型的方法小结

    本文实例总结了python模拟enum枚举类型的方法。分享给大家供大家参考。具体分析如下: python中没有enum枚举类型,可能python认为这玩意压根就没用,下面列举了三种方法模拟enum枚举类型 方法1. 使用自定义类 class...

    Java(enum)枚举用法详解

    以下是一个示例,展示了如何使用这些内置方法: ```java public class EnumMethodDemo { enum Color {RED, GREEN, BLUE} enum Size {BIG, MIDDLE, SMALL} public static void main(String[] args) { // 打印...

Global site tag (gtag.js) - Google Analytics