(转)JDK 1.5中的ENUM用法
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用法相关推荐
- mybatis-plus中的Enum用法案例
需求 数据库里存放1 2 3 ,写一个枚举类 ,1对应第一次,2对应第二次,3...,前端展示的数据当然也是,第一次,第二次... 接口 1.给前端返回列表数据 前端调用接口,数据库查询的字段为vis ...
- C语言中枚举enum的用法
本文举例说明C语言中enum枚举关键字的用法. 用来同时定义多个常量 利用enum定义月份的例子如下. #include enum week {Mon=1,Tue,Wed,Thu,Fri,Sat,Su ...
- c语言枚举常量,浅述C语言中枚举enum的用法
本文举例说明C语言中enum枚举关键字的用法. 用来同时定义多个常量 利用enum定义月份的例子如下. #includeenumweek{Mon=1,Tue,Wed,Thu,Fri,Sat,Sun}; ...
- Swift中enum用法
注:摘自斯坦福swift公开课 在swift中,enum(枚举类型)和struct一样都是值类型,进行值传递.和其他语言不同的是在swift中,enum中的每个case可以有与之关联的数据(assoc ...
- 枚举类型enum用法_Java枚举深度解读,看这篇就够了
作者 | 涛GuoGuo的跟屁虫丶博Ke 来源 | urlify.cn/aaamQf 66套java从入门到精通实战课程分享 Java枚举 1.枚举类概念的理解与定义 一个类的对象是有限个,确定的,我 ...
- Java、Mysql、MyBatis 中枚举 enum 的使用
From: https://yulaiz.com/java-mysql-enum/ Java 和 MySql 中都有枚举的概念,合理的使用枚举,可以让代码阅读和数据库数据查询更加直观.高效.那么我们怎 ...
- Java 中 switch 的用法
Java 中 switch 的用法 1.switch 中的表达式的数据的数据类型为 byte, short, int, char, String(jdk > 1.7支持 String 类型) 2 ...
- WEB Struts2 中OGNL的用法
2019独角兽企业重金招聘Python工程师标准>>> User对象属性获取 如User中有username和password字段 获取username属性<s:propert ...
- C/C++常用宏定义,注意事项,宏中#和##的用法
总结下宏和函数的不同之处,以供大家写代码时使用,这段总结摘自<C和指针>一书. 当然宏定义非常重要的,它可以帮助我们防止出错,提高代码的可移植性和可读性等. 下面列举一些成熟软件中常用得宏 ...
最新文章
- bitset优化+滚动优化dp ----- 2021牛客多校第8场 F Robot
- Mysqli的批量CRUD数据
- 华为内部面试题库---(9)
- mysql 5.7 配置多实例 — 独立配置文件方式
- 简单工厂 jdk源码解析
- 深入理解ThreadLocal
- 科学家公布“寿命计算器”,快算一下你能活多久?
- 官宣!.NET官网发布中⽂版
- 异步任务,邮箱任务,定时任务
- 推荐我们在B站的生信程序基础课
- SAS在金融中的应用三
- java安卓图片全屏_在Android中全屏显示GIF图片(演示代码)
- Linux 的内存分页管理
- [转载]windows 7 IIS 7.5 ASP.Net 文件上传大小限制
- [读书]看看你有没有忽视
- 毕设-基于SpringBoot企业人事管理系统
- 案例4——52周存钱挑战
- 大型连锁百货运维审计用什么软件好?有哪些功能?
- valgrind:内存泄漏 memory leak 调试教程
- cmt obm odm 代工模式oem_作为经销商如果你不懂什么是OEM、ODM、OBM?代工、贴牌是什么?那就把这些记住!...