java最简单的enum类使用说明
2017-05-06 23:13
399 查看
[尊重一点点努力,转载请注明出处]http://blog.csdn.net/luochoudan/article/details/71305652]
写代码的过程中,使用到enum,忽然发现对这个类有点陌生了,所以总结了一下它的基本用法。
拒绝硬编码,让代码变的更可读、更健壮、更优雅。想必大家读代码都有过被一堆乱七八糟的常量折磨的经历,要是再没有注释,难保不会骂娘。enum的出现,方便了常量的统一管理,避免重复定义,同时也能方便地常量添加具体的语意;
一个key多个value时特别有用。比如常见的状态码,可能有许多值。如果使用常量描述的话,必然是很大一坨。解析状态码代表的语义时也少不了一堆if-else。eunm可以将这些状态收敛在同一个类中,并可以将状态码的解析放在enum内部实现,更符合单一职责的原则。
方便调试和日志。如果是常量,字符串还好说,数字可就唧唧了,迷之代码必然会给调试带来不少麻烦。
为了更直观地说明,不妨通过两段代码来看一下它的日常用法。
最简单的:
升级版的:
掌握这两种写法,基本能满足日常开发需要。有两点注意一下:
enum的值一定放在最前面,之间一定用”,”隔开,用”;”收尾;
自定义构造器必须要放在值后面。
enum的构造器默认是private,所以在写构造函数时,可以不加修饰词,要加也只能是private;
enum是一种特殊的常量,可以使用==或者euqal比较两个值是否相等;
Java定义了两个关于enum的集合类,EnumSet和EnumMap。使用的时候要注意一个集合内只能有一种Enum的不同值;
enum中不能存在main函数;
尽量给每个enum值添加注释,除非字面意思十分明显的,避免日后懵逼;
用enum实现单例,不但线程安全而且还能反序列化,是很多教材推荐的一种单例实现。
写代码的过程中,使用到enum,忽然发现对这个类有点陌生了,所以总结了一下它的基本用法。
为什么要用enum?
这个问题,笔者曾在问答区回答过码友。之所以使用enum,很多时候是用来代替常量(本质是一种特殊的常量),归结起来,大概有以下几点:拒绝硬编码,让代码变的更可读、更健壮、更优雅。想必大家读代码都有过被一堆乱七八糟的常量折磨的经历,要是再没有注释,难保不会骂娘。enum的出现,方便了常量的统一管理,避免重复定义,同时也能方便地常量添加具体的语意;
一个key多个value时特别有用。比如常见的状态码,可能有许多值。如果使用常量描述的话,必然是很大一坨。解析状态码代表的语义时也少不了一堆if-else。eunm可以将这些状态收敛在同一个类中,并可以将状态码的解析放在enum内部实现,更符合单一职责的原则。
方便调试和日志。如果是常量,字符串还好说,数字可就唧唧了,迷之代码必然会给调试带来不少麻烦。
怎么使用enum?
enum的使用很简单,它本质是一种特殊的类,你可以为它添加构造器,添加任何你想实现的功能函数,甚至添加内部类等等。为了更直观地说明,不妨通过两段代码来看一下它的日常用法。
最简单的:
public enum Month { //值之间用","隔开,用";"收尾 MON, TUE, WED; }
升级版的:
public enum Month { //enum的值在第一位 MON(1 , "一月"), TUE(2 , "二月"), WED(3 , "三月"); //构造器和常量必须写在值后面 private int code; private String description; Month(int code,String description){ this.code = code; this.description = description; } //根据code找到要呈现给用户的description;这个转化应该收敛在Month内部实现 public static String getDescription(int code){ //遍历 for(Month month : Month.values()){ if(month.code == code){ return month.description; } } return null; } @Override public String toString(){ return code + " : " + description; } }
掌握这两种写法,基本能满足日常开发需要。有两点注意一下:
enum的值一定放在最前面,之间一定用”,”隔开,用”;”收尾;
自定义构造器必须要放在值后面。
enum使用注意
enum默认继承了抽象类Enum,不可再继承别的类,但可自由实现接口;enum的构造器默认是private,所以在写构造函数时,可以不加修饰词,要加也只能是private;
enum是一种特殊的常量,可以使用==或者euqal比较两个值是否相等;
Java定义了两个关于enum的集合类,EnumSet和EnumMap。使用的时候要注意一个集合内只能有一种Enum的不同值;
enum中不能存在main函数;
尽量给每个enum值添加注释,除非字面意思十分明显的,避免日后懵逼;
用enum实现单例,不但线程安全而且还能反序列化,是很多教材推荐的一种单例实现。
相关文章推荐
- C#枚举(enum)例子与简单使用说明
- log4j日志管理系统简单使用说明 - open java project(转载)
- Java中Random的简单使用说明
- Java枚举enum : 简单枚举与自定义枚举的入门使用
- Java File类的简单说明与使用 -- Java 基础
- 【Java 线程的深入研究3】最简单实例说明wait、notify、notifyAll的使用方法
- 简单说明什么是递归?什么情况会使用?并使用Java实现一个简单的递归程序。
- Java中的Enum的简单使用
- Java enum(枚举)的简单使用
- 简单说明Java的Struts框架中merge标签的使用方法
- java使用redis简单说明
- java的枚举enum的简单使用
- java使用redis简单说明
- 有趣的Java - 简单使用enum实现策略模式Strategy
- Java Enum的简单使用
- Java中finally的简单使用说明
- Java的Web项目使用DWR简单配置说明
- java枚举enum最简单的使用
- Java使用GoogleProtocolBuffer简单说明
- log4j日志管理系统简单使用说明 - open java project(转载)