Enum是enumeration(列举)的简写形式,包含在java.lang包中.熟悉C, C++, C#, 或 Pascal人应该对列举有所了解,先看个例子:

public enum Season { winter, spring, summer, fall }

一个enum是定义一组值的对象,它可以包括零个或多个值成员.它是属于enum类型的,一个enum对象中不可有两个或多个相同的属性或值.在次之前的java程序员一般是 用接口的方法实现列举的,如 :

public interface Season {

static winter = 0;

static spring = 1; //etc..

}

引入了enum的java的列举的编写方便了许多,只须定义一个enum型的对象.enum对象的值都回自动获得一个数字值,从0开始,依次递增.看一个比较简单的enum实现的例子:

EnumDemo.java

package net.javagarage.enums;

/*

We can loop over the values we put into the enum

using the values() method.

Note that the enum Seasons is compiled into a

separate unit, called EnumDemo$Seasons.class

*/

public class EnumDemo {

/*declare the enum and add values to it. note that, like in C#, we don't use a ; to

end this statement and we use commas to separate the values */

private enum Seasons { winter, spring,

summer, fall }

//list the values

public static void main(String[] args) {

for (Seasons s : Seasons.values()){

System.out.println(s);

}

}

}
运行上述代码你回得到 以下结果:

winter

spring

summer

fall

Enum的属性调用:

下面的代码展示了调用enum对象的方法,这也是它通常的用法:

package net.javagarage.enums;

/*

File: EnumSwitch.java

Purpose: show how to switch against the values in an enum.

*/

public class EnumSwitch {

private enum Color { red, blue, green }

//list the values

public static void main(String[] args) {

//refer to the qualified value

doIt(Color.red);

}

/*note that you switch against the UNQUALIFIED name. that is, "case Color.red:" is a

compiler error */

private static void doIt(Color c){

switch (c) {

case red:

System.out.println("value is " + Color.red);

break;

case green:

System.out.println("value is " + Color.green);

break;

case blue:

System.out.println("value is : " + Color.blue);

break;

default :

System.out.println("default");

}

}
}

为enums添加属性和方法

enums也可以象一般的类一样添加方法和属性,你可以为它添加静态和非静态的属性或方法,这一切都象你在一般的类中做的那样.

package net.javagarage.enums;

/*

File: EnumDemo.java

Purpose: show how to use an enum that also defines its own fields and methods

*/

public class EnumWithMethods {

//declare the enum and add values to it.

public enum Season {

winter, spring, summer, fall;

private final static String location = "Phoenix";

public static Season getBest(){

if (location.equals("Phoenix"))

return winter;

else

return summer;

}

public static void main(String[] args) {

System.out.println(Season.getBest());

}

}

就是这么的简单.但是有一点是需要注意的,那就是enums的值列表必须紧跟在enum声明,不然编译时将会出错.

Enums构造函数:

和类一样enums也可以有自己的构造函数,如下:

package net.javagarage.enums;

public class EnumConstructor {

public static void main(String[] a) {

//call our enum using the values method

for (Temp t : Temp.values())

System.out.println(t + " is : " + t.getValue());

}

//make the enum

public enum Temp {

absoluteZero(-459), freezing(32),

boiling(212), paperBurns(451);

//constructor here

Temp(int value) {

this.value = value;

}

//regular field?but make it final,

//since that is the point, to make constants

private final int value;

//regular get method

public int getValue() {

return value;

}

}

}
输出结果是:

absoluteZero is : -459

freezing is : 32

boiling is : 212

paperBurns is : 451

尽管enums有这么多的属性,但并不是用的越多越好,如果那样还不如直接用类来的直接.enums的优势在定义int最终变量仅当这些值有一定特殊含义时.但是如果你需要的是一个类,就定义一个类,而不是enum.

(转)JDK 1.5中的ENUM用法相关推荐

  1. mybatis-plus中的Enum用法案例

    需求 数据库里存放1 2 3 ,写一个枚举类 ,1对应第一次,2对应第二次,3...,前端展示的数据当然也是,第一次,第二次... 接口 1.给前端返回列表数据 前端调用接口,数据库查询的字段为vis ...

  2. C语言中枚举enum的用法

    本文举例说明C语言中enum枚举关键字的用法. 用来同时定义多个常量 利用enum定义月份的例子如下. #include enum week {Mon=1,Tue,Wed,Thu,Fri,Sat,Su ...

  3. c语言枚举常量,浅述C语言中枚举enum的用法

    本文举例说明C语言中enum枚举关键字的用法. 用来同时定义多个常量 利用enum定义月份的例子如下. #includeenumweek{Mon=1,Tue,Wed,Thu,Fri,Sat,Sun}; ...

  4. Swift中enum用法

    注:摘自斯坦福swift公开课 在swift中,enum(枚举类型)和struct一样都是值类型,进行值传递.和其他语言不同的是在swift中,enum中的每个case可以有与之关联的数据(assoc ...

  5. 枚举类型enum用法_Java枚举深度解读,看这篇就够了

    作者 | 涛GuoGuo的跟屁虫丶博Ke 来源 | urlify.cn/aaamQf 66套java从入门到精通实战课程分享 Java枚举 1.枚举类概念的理解与定义 一个类的对象是有限个,确定的,我 ...

  6. Java、Mysql、MyBatis 中枚举 enum 的使用

    From: https://yulaiz.com/java-mysql-enum/ Java 和 MySql 中都有枚举的概念,合理的使用枚举,可以让代码阅读和数据库数据查询更加直观.高效.那么我们怎 ...

  7. Java 中 switch 的用法

    Java 中 switch 的用法 1.switch 中的表达式的数据的数据类型为 byte, short, int, char, String(jdk > 1.7支持 String 类型) 2 ...

  8. WEB Struts2 中OGNL的用法

    2019独角兽企业重金招聘Python工程师标准>>> User对象属性获取 如User中有username和password字段 获取username属性<s:propert ...

  9. C/C++常用宏定义,注意事项,宏中#和##的用法

    总结下宏和函数的不同之处,以供大家写代码时使用,这段总结摘自<C和指针>一书. 当然宏定义非常重要的,它可以帮助我们防止出错,提高代码的可移植性和可读性等. 下面列举一些成熟软件中常用得宏 ...

最新文章

  1. bitset优化+滚动优化dp ----- 2021牛客多校第8场 F Robot
  2. Mysqli的批量CRUD数据
  3. 华为内部面试题库---(9)
  4. mysql 5.7 配置多实例 — 独立配置文件方式
  5. 简单工厂 jdk源码解析
  6. 深入理解ThreadLocal
  7. 科学家公布“寿命计算器”,快算一下你能活多久?
  8. 官宣!.NET官网发布中⽂版
  9. 异步任务,邮箱任务,定时任务
  10. 推荐我们在B站的生信程序基础课
  11. SAS在金融中的应用三
  12. java安卓图片全屏_在Android中全屏显示GIF图片(演示代码)
  13. Linux 的内存分页管理
  14. [转载]windows 7 IIS 7.5 ASP.Net 文件上传大小限制
  15. [读书]看看你有没有忽视
  16. 毕设-基于SpringBoot企业人事管理系统
  17. 案例4——52周存钱挑战
  18. 大型连锁百货运维审计用什么软件好?有哪些功能?
  19. valgrind:内存泄漏 memory leak 调试教程
  20. cmt obm odm 代工模式oem_作为经销商如果你不懂什么是OEM、ODM、OBM?代工、贴牌是什么?那就把这些记住!...

热门文章

  1. DOS批处理中%cd%和%~dp0的区别
  2. Keep-Alive功能使客户端到服务器端的连接持续有效
  3. 信用卡还款直减500
  4. shopex安装Zend Optimizer - 3.3.0后依然乱码
  5. Asp.net网站开发架构设计要求
  6. CSS3实现的响应式字体:自适应视图窗口大小的新单位
  7. iOS中XML解析 (一) TBXML (实例:打印xml内容及存储到数组)
  8. 图片旋转 rotate
  9. 华为机试——字符串分隔
  10. pptx给幻灯片添加内容