java枚举使用详解

在实际编程中,往往存在着这样的“数据集”,它们的数值在程序中是稳定的,而且“数据集”中的元素是有限的。

例如星期一到星期日七个数据元素组成了一周的“数据集”,春夏秋冬四个数据元素组成了四季的“数据集”。

在java中如何更好的使用这些“数据集”呢?因此枚举便派上了用场,以下代码详细介绍了枚举的用法。

package com.ljq.test;

/**

* 枚举用法详解

*

* @author jiqinlin

*

*/

public class TestEnum {

/**

* 普通枚举

*

* @author jiqinlin

*

*/

public enum ColorEnum {

red, green, yellow, blue;

}

/**

* 枚举像普通的类一样可以添加属性和方法,可以为它添加静态和非静态的属性或方法

*

* @author jiqinlin

*

*/

public enum SeasonEnum {

//注:枚举写在最前面,否则编译出错

spring, summer, autumn, winter;

private final static String position = "test";

public static SeasonEnum getSeason() {

if ("test".equals(position))

return spring;

else

return winter;

}

}

/**

* 性别

*

* 实现带有构造器的枚举

*

* @author jiqinlin

*

*/

public enum Gender{

//通过括号赋值,而且必须带有一个参构造器和一个属性跟方法,否则编译出错

//赋值必须都赋值或都不赋值,不能一部分赋值一部分不赋值;如果不赋值则不能写构造器,赋值编译也出错

MAN("MAN"), WOMEN("WOMEN");

private final String value;

//构造器默认也只能是private, 从而保证构造函数只能在内部使用

Gender(String value) {

this.value = value;

}

public String getValue() {

return value;

}

}

/**

* 订单状态

*

* 实现带有抽象方法的枚举

*

* @author jiqinlin

*

*/

public enum OrderState {

/** 已取消 */

CANCEL {public String getName(){return "已取消";}},

/** 待审核 */

WAITCONFIRM {public String getName(){return "待审核";}},

/** 等待付款 */

WAITPAYMENT {public String getName(){return "等待付款";}},

/** 正在配货 */

ADMEASUREPRODUCT {public String getName(){return "正在配货";}},

/** 等待发货 */

WAITDELIVER {public String getName(){return "等待发货";}},

/** 已发货 */

DELIVERED {public String getName(){return "已发货";}},

/** 已收货 */

RECEIVED {public String getName(){return "已收货";}};

public abstract String getName();

}

public static void main(String[] args) {

//枚举是一种类型,用于定义变量,以限制变量的赋值;赋值时通过“枚举名.值”取得枚举中的值

ColorEnum colorEnum = ColorEnum.blue;

switch (colorEnum) {

case red:

System.out.println("color is red");

break;

case green:

System.out.println("color is green");

break;

case yellow:

System.out.println("color is yellow");

break;

case blue:

System.out.println("color is blue");

break;

}

//遍历枚举

System.out.println("遍历ColorEnum枚举中的值");

for(ColorEnum color : ColorEnum.values()){

System.out.println(color);

}

//获取枚举的个数

System.out.println("ColorEnum枚举中的值有"+ColorEnum.values().length+"个");

//获取枚举的索引位置,默认从0开始

System.out.println(ColorEnum.red.ordinal());//0

System.out.println(ColorEnum.green.ordinal());//1

System.out.println(ColorEnum.yellow.ordinal());//2

System.out.println(ColorEnum.blue.ordinal());//3

//枚举默认实现了java.lang.Comparable接口

System.out.println(ColorEnum.red.compareTo(ColorEnum.green));//-1

//--------------------------

System.out.println("===========");

System.err.println("季节为" + SeasonEnum.getSeason());

//--------------

System.out.println("===========");

for(Gender gender : Gender.values()){

System.out.println(gender.value);

}

//--------------

System.out.println("===========");

for(OrderState order : OrderState.values()){

System.out.println(order.getName());

}

}

}

Java枚举介绍_java枚举使用详细介绍及实现相关推荐

  1. Java 集合系列03之 ArrayList详细介绍(源码解析)和使用示例

    转载自  Java 集合系列03之 ArrayList详细介绍(源码解析)和使用示例 第1部分 ArrayList介绍 ArrayList简介 ArrayList 是一个数组队列,相当于 动态数组.与 ...

  2. JAVA中JVM的重排序详细介绍(写得很明白)

    刚刚在研究volatile变量的时候,涉及到重排序的概念,于是发现了这篇很好的文章,写得很简短很明白.所以转载一下. 原文地址:JAVA中JVM的重排序详细介绍 原文贴出来: 重排序通常是编译器或运行 ...

  3. 1、【java数据安全】数据安全之加密解密(base64、MD、SHA、DES、AES、IDEA、PBE、DH、RSA、EIGamal)、数字签名(DSA、ECDSA)和数字证书介绍、应用示例详细介绍

    java数据安全 系列文章 1.[java数据安全]数据安全之加密解密(base64.MD.SHA.DES.AES.IDEA.PBE.DH.RSA.EIGamal).数字签名(DSA.ECDSA)和数 ...

  4. 枚举类与注解的详细介绍

    目录 枚举类的使用 自定义枚举类  : 使用enum定义枚举类 Enum类的主要方法 实现接口的枚举类 注解 注解 (Annotation) 概述 常见的Annotation示例 示例二:在编译时进行 ...

  5. java什么是类枚举类_java枚举类型是什么?

    下面就是一个典型枚举类型的定义: Java代码 Java代码 public enum Color{ RED,BLUE,BLACK,YELLOW,GREEN } 显然,enum很像特殊的class,实际 ...

  6. java获取枚举索引_Java枚举使用详解

    在实际编程中,往往存在着这样的"数据集",它们的数值在程序中是稳定的,而且"数据集"中的元素是有限的. 例如星期一到星期日七个数据元素组成了一周的"数 ...

  7. java 枚举 方法_Java枚举使用方法详解

    在实际编程中,往往存在着这样的"数据集",它们的数值在程序中是稳定的,而且"数据集"中的元素是有限的. 例如星期一到星期日七个数据元素组成了一周的"数 ...

  8. java枚举 数字_java 枚举

    Java中枚举的线程安全性及序列化问题 --枚举是如何保证线程安全的 要想看源码,首先得有一个类吧,那么枚举类型到底是什么类呢?是enum吗?答案很明显不是,enum就和class一样,只是一个关键字 ...

  9. java 枚举 接口_java枚举接口

    java中的枚举类 枚举类(enum),与class和interface关键字地位相同. 枚举类是一个特殊的类,可以有自己的成员变量.方法.构造器,可以实现一个或多个接口.一个java源文件中只能有一 ...

  10. java输入枚举型_Java 枚举型为什么是静态的,以及是怎么实现的?

    确实,枚举类型总让我们觉着怪怪的,无论是语法还是静态非静态,还是操作方法,总让人觉着它和数组.列表等格格不入.那到底是为什么呢? 我们从本质分析下java的枚举类型. 1 枚举类型初探 枚举类型,其语 ...

最新文章

  1. 边缘计算 — 与车联网
  2. 三、oracle 用户管理一
  3. java取消按钮事件_java按钮事件处理程序
  4. 《仙剑奇侠传》的宗教元素考察(一):赵灵儿的宿命之旅
  5. ajax div 赋值重新渲染_优化向:单页应用多路由预渲染指南
  6. 中国科学家提出“探索极端宇宙”国际科学计划
  7. do与mysql数据类型对照_dophon-db: dophon框架的数据库模块,支持mysql,sqlite数据库,带有orm持久化功能与链式操作实例,贴近逻辑习惯,支持mysql多数据源配置...
  8. Android 8.0学习 (36)---Android 8.0 WebView 拍照、简易预览、二维码扫描 各种问题解决
  9. tyvj 1031 热浪 最短路
  10. c语言对用下标法二维数组遍历,二维数组遍历:下标法与指针法的较量
  11. 《编译原理》学习笔记 ·002【第二章:文法和语言(形式语言理论)-1】
  12. ssm会员商城管理系统答辩PPT免费下载
  13. 线性表的顺序存储C++代码实现
  14. 02-body标签中相关标签
  15. MySQL命令行登录
  16. 文档数据库与关系数据库的比较
  17. 网络流-一江春水向东流
  18. Tomcat学习笔记(三)—— Server组件
  19. OFD文件转PDF怎么转换?教你一键转换方法
  20. C/C++动态申请空间方式

热门文章

  1. 五、谈扩展方法的理解
  2. __flash__removeCallback 未定义错误
  3. 10 个 Linux 网络和监控命
  4. CVS常用命令速查手册
  5. redis 哨兵的原理
  6. 文档根元素 mapper 必须匹配 DOCTYPE 根 configuration
  7. C语言的 typedef 关键字
  8. H3C交换机配件RS232配置线(DB9针转RJ45)
  9. 訪问可能没有定义的data (通过static类型flash.net:FileReference引用)
  10. swift -- 字典