枚举:

  刚开始项目中没怎么用过,只知道能够实现作为项目中类似定义Constant的功能,然后知道枚举实现的单例模式几乎是最优雅的。所以,

想要系统完整的了解一下Enum。

1、基本特性:

Enum.values()可以遍历enum实例。返回的是enum实例的数组

public enum EnumDemo {
jesen,
kobe,
gakki
}
public static void main(String[] args) {
for (EnumDemo demo : EnumDemo.values()) {
System.out.println(demo);
}
}

2、向enum中添加新方法

public enum Status {
SUCCESS(200, "SUCCESS"),
BAD_REQUEST(400, "Bad Request"),
NOT_FOUND(404, "Not Found"),
INTERNAL_SERVER_ERROR(500, "Unkown Internal Error"),
NOT_VALID_PARAM(40005, "Not valid Params"),
NOT_SUPPORTED_OPERATION(40006, "Operation not supported"),
NOT_LOGIN(50000, "Not Login"); private int code;
private String message; Status(int code, String message) {
this.code = code;
this.message = message;
} public void setCode(int code) {
this.code = code;
} public void setMessage(String message) {
this.message = message;
} public int getCode() {
return code;
} public String getMessage() {
return message;
}
}
使用:Status.SUCCESS.getCode()

类似这样去使用,上面的例子:可以应用到Response返回状态的定义

3、switch语句中的enum

public static void main(String[] args) {
EnumDemo code = EnumDemo.jesen;
switch (code) {
case jesen:
System.out.println("jesen");
break;
case kobe:
System.out.println("kobe");
break;
case gakki:
System.out.println("gakki");
break;
}
}

一般来说switch中只能使用整数值,而enum具有整数值的次序,这样显得很简洁

4、常量相关的方法

允许为enum实例编写方法

public enum  ConstantSpec {

    DATA_TIME {
String getInfo() {
return "DATA_TIME";
}
}, CLASS_PATH {
String getInfo() {
return "CLASS_PATH";
}
}
}

5、优雅的实现单例

public class SingletonExample {

    // 私有构造函数
private SingletonExample() { } public static SingletonExample getInstance() {
return Singleton.INSTANCE.getInstance();
} private enum Singleton {
INSTANCE; private SingletonExample singleton; // JVM保证这个方法绝对只调用一次
Singleton() {
singleton = new SingletonExample();
} public SingletonExample getInstance() {
return singleton;
}
}
}

优点:

  1、解决线程安全问题。enum天生不存在并发安全问题

  2、避免反序列化破坏单例。枚举的反序列化并不通过反射实现。

Java基础(六)--枚举Enum的更多相关文章

  1. Java基础之枚举类型Enum的使用

    Java基础之枚举类型Enum的使用 定义 public enum AccruedCleanEnum { SPREAD("1","发票"),OTHER(&quo ...

  2. 【转】Java基础笔记 – 枚举类型的使用介绍和静态导入--不错

    原文网址:http://www.itzhai.com/java-based-notes-introduction-and-use-of-an-enumeration-type-static-impor ...

  3. 黑马程序员:Java基础总结----枚举

    黑马程序员:Java基础总结 枚举   ASP.Net+Android+IO开发 . .Net培训 .期待与您交流! 枚举 为什么要有枚举 问题:要定义星期几或性别的变量,该怎么定义?假设用1-7分别 ...

  4. Java基础之枚举

    Java基础之枚举 作为1.5才增加的特性,枚举的使用并不是很多. 枚举其实就是一个比较特殊的类,就如同注解其实也是个特殊的接口一样(注解反编译之后没有了@符号).枚举使用enum关键字声明,通过反编 ...

  5. Java 基础之-枚举

      目录(?)[-] 用法一常量 用法二switch 用法三向枚举中添加新方法 用法四覆盖枚举的方法 用法五实现接口 用法六使用接口组织枚举 用法七关于枚举集合的使用   DK1.5引入了新的类型-- ...

  6. java基础(十一) 枚举类型

    枚举类型Enum的简介 1.什么是枚举类型 枚举类型: 就是由一组具有名的值的有限集合组成新的类型.(即新的类). 好像还是不懂,别急,咱们先来看一下 为什么要引入枚举类型 在没有引入枚举类型前,当我 ...

  7. Java基础_枚举类型

    作用:让数据更简洁,更易读,增加代码可读性. 为了用1,2,3,4,5分别表示老师,学生,小组,班主任,后勤,可以直接设置一个变量,让roleType = 1,但这样写代码可读性差. 也可以定义一个成 ...

  8. java基础(六) switch语句的深入解析

    引言   switch 语句是非常的基础的知识,掌握起来也不难掌握,语法比较简单.但大部分人基本是知其然,不知其所以然.譬如 早期JDK只允许switch的表达式的值 int及int类型以下的基本类型 ...

  9. Java基础之枚举妙用

    对于枚举,初学Java的时候可能我们就已经接触过了,但是在毕业前,其实一直都不知道真正工作里面枚举是怎么用的,枚举有什么用?接下来,博主就介绍枚举在实际工作中的一种使用场景,本文只适合初级的小菜鸟看哈 ...

随机推荐

  1. linux用户进程分析

           经过实验3的介绍.我们须要来点实在的.所以将我们理解的流程用于linux系统的分析.换句话说.通过类比的方式去进行描写叙述与理解linux相关的部分. 本节的内容非常详实.并且也分析 ...

  2. tf.image.resize_bilinear 图像缩放,双线性插值-图像中心对齐

    http://www.cnblogs.com/yssongest/p/5303151.html 双线性插值算法及需要注意事项 input = tf.placeholder(tf.float32, sh ...

  3. nginxserver报403 forbidden错误的解决的方法

     改动nginx.config文件内容: location / {             #root   html;             root   D:\java;            ...

  4. asp.net forms认证

    工作中遇到的asp.net项目使用forms认证.以前虽然用过,但其原理并不了解,现在甚至对什么是form认证也完全不知道了.对一样东西如果不清楚其原理,不知其所以然,那么死记硬背是无济于事的. as ...

  5. HDU 1379:DNA Sorting

    DNA Sorting Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Tota ...

  6. 【Codevs 2115】数集分割

    http://codevs.cn/problem/2115/ // <2115.cpp> - Sun Oct 9 12:58:23 2016 // This file is made by ...

  7. MySQL:MySQL安装

    ylbtech-MySQL:MySQL安装 mysql5.5.27_win64_zol.msi 1.返回顶部 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14 ...

  8. 【高德地图API】SDK v1.1.1 在代码中设置Map中心点Center级别不起作用

    有时候你在初始化地图时不是直接在xaml中设置Map的Center,而是在cs代码中设置Center或者设置SetZoomAndCenter改变中心点和缩放级别.你可能会发现,不起作用. 这边提出的解 ...

  9. MySQL Archive存储引擎

    200 ? "200px" : this.width)!important;} --> 介绍 从archive单词的解释我们大概可以明白这个存储引擎的用途,这个存储引擎基本上 ...

  10. html表格合并单元格

    th标签 合并列 colspan="k" 合并行 rowspan="k"   例子<th colspan="2", rowspan=& ...