本文转载自:http://blog.csdn.net/qq_27093465/article/details/51706076 作者:李学凯

什么时候想用枚举类型:

有时候,在设计一个java model对象的时候,你需要一些具体的常量字符串之类的东西,这个东西又没必要跟整个项目的全局常量放在一起,就放在model的java文件里面是最合适的,那么,你可以有两种选择:

1,在java model文件里面,定义public final static XXXX = "" ;

这种就是全局静态变量,通过类名就可以直接访问。

2,还是在java model 文件里面,定义个枚举类型 public enum XXXX{a,b,c,d,e,f};

什么时候,如何使用:

当在和前台传过来的数据或者在逻辑操作的代码里面需要去用到这个常量值去做比较的时候,就是使用枚举类型的时候。

一般形式是: 类名.枚举类型名.单个枚举类型

用上面的例子(假设在一个叫A的model java文件里面),

则为A.XXXX.a.toString();

就可以这么使用了。

为什么要这么设计常量:

这里有个代码的书写原则,这东西一般是没人,而且书里面也是没人跟你说的,都是代码看多了,或者,在你犯错误的时候才知道的问题。

就是在自己的代码里面,要是想使代码很规范,不被吊打,

那么写出来的逻辑代码里面是不应该出现常量字符串和常量数字之类的东西

例如代码里面出现数字:100,8,

或者其他的数字,

字符串如:只要是在逻辑代码里面带引号的。

这些代码,你写出来虽然在功能上是没有问题的,但是,这些都是隐藏的炸弹。

好的代码,是不会出现这个问题的。这些东西都应该被定义成一个常量,然后再在其他地方使用。

类似c语言里面的宏定义的感觉。

不然在很久之后,忽然有些地方的值换了,只需要修改一处地方,整个项目都不用担心会出问题,

但是,如果你没有这么干,那么,没人知道你在逻辑代码里面还有这样的常量存在。

那么代码就会出现美妙的后果。

然后就炸了。

怎么循环一个枚举类型。

枚举有一个方法,values(),

使用形式如: int length = XXXX.values().length

返回的是一个类型与枚举类型一致的数组。

然后就可以循环这个数组。

就是循环枚举类型了。

public enum EnumTest {
MON, TUE, WED, THU, FRI, SAT, SUN;
}
//循环输出 值
for (EnumTest e : EnumTest.values()) {
System.out.println(e.toString());
}

  

.ordinal()方法。

这个方法就是从枚举类型的第一个枚举开始,依次从零开始往上递增。

上面的例子中a,b,c,d,e,f,依次对应 为数字 ,0,1,2,3,4,5

形式:A.XXXX.a.ordinal();

这么个方式调用。

创建枚举类型要使用 enum 关键字,
隐含了所创建的类型都是 
java.lang.Enum 
类的子类(java.lang.Enum 是一个抽象类)
其中的方法和属性如下图:

enum 对象的常用方法介绍

int compareTo(E o) 
比较此枚举与指定对象的顺序。

Class<E> getDeclaringClass()
返回与此枚举常量的枚举类型相对应的 Class 对象。

String name() 
返回此枚举常量的名称,在其枚举声明中对其进行声明。

int ordinal() 
返回枚举常量的序数(它在枚举声明中的位置,其中初始常量序数为零)。

String toString()
返回枚举常量的名称,它包含在声明中。

static <T extends Enum<T>> T valueOf(Class<T> enumType, String name)
返回带指定名称的指定枚举类型的枚举常量。

另外的详解用法,七种。

(转载)java 枚举 循环遍历以及一些简单常见的使用的更多相关文章

  1. JAVA中循环遍历list有三种方式

    转自:https://blog.csdn.net/changjizhi1212/article/details/81036509JAVA中循环遍历list有三种方式for循环.增强for循环(也就是常 ...

  2. Java 枚举(enum) 详解7种常见的用法

    Java 枚举(enum) 详解7种常见的用法 来源 https://blog.csdn.net/qq_27093465/article/details/52180865 JDK1.5引入了新的类型— ...

  3. 转载 java枚举类型enum的使用 (原文地址:http://blog.csdn.net/wgw335363240/article/details/6359614)

    java枚举类型enum的使用 最近跟同事讨论问题的时候,突然同事提到我们为什么java中定义的常量值不采用enmu枚举类型,而采用public final static 类型来定义呢?以前我们都是采 ...

  4. java中循环遍历实体类的属性和数据类型以及属性值

    package com.walkerjava.test; import java.lang.reflect.Field; import java.lang.reflect.InvocationTarg ...

  5. java 各种循环遍历

    遍历方式选择: 实现了 RandomAccess 接口的 list,优先选择普通 for 循环 ,其次 foreach: 未实现 RandomAccess 接口的 list, 优先选择 iterato ...

  6. Java 枚举(enum) 详解4种常见的用法

    JDK1.5引入了新的类型——枚举.在 Java 中它虽然算个“小”功能,却给我的开发带来了“大”方便. 大师兄我又加上自己的理解,来帮助各位理解一下. 用法一:常量 在JDK1.5 之前,我们定义常 ...

  7. Java中循环删除list中元素的方法总结

    印象中循环删除list中的元素使用for循环的方式是有问题的,但是可以使用增强的for循环,然后在今天使用的时候发现报错了,然后去科普了一下,发现这是一个误区.下面我们来一起看一下. Java中循环遍 ...

  8. JAVA中循环删除list中元素的方法总结【转】

    印象中循环删除list中的元素使用for循环的方式是有问题的,但是可以使用增强的for循环,然后今天在使用时发现报错了,然后去科普了一下,再然后发现这是一个误区.下面就来讲一讲..伸手党可直接跳至文末 ...

  9. JAVA中循环删除list中元素

    文章来源: https://www.cnblogs.com/pcheng/p/5336903.html JAVA中循环遍历list有三种方式for循环.增强for循环(也就是常说的foreach循环) ...

随机推荐

  1. win10 sdk 是否向下兼容

    向下兼容(downward compatibility),又称向后兼容(backward compatibility).回溯兼容,在计算机中指在一个程序.库或硬件更新到较新版本后,用旧版本程序创建的文 ...

  2. Struts2 06--系统拦截器防止数据重复提交

    一.拦截器简要概述 拦截器,在AOP(Aspect-Oriented Programming)中用于在某个方法或字段被访问之前,进行拦截然后在之前或之后加入某些操作.拦截是AOP的一种实现策略. 在W ...

  3. JavaScript中的数值转换

    在JavaScript中,有3个函数可以把非数值转换为数值 1.Number()函数 Number()可以用于任意数据类型. 转换规则如下. 如果是Boolean值,true和false将分别被转换为 ...

  4. 关于tarjan算法的空间优化

    最近随着对tarjan算法理解的加深,我发现用另外一种途径实现tarjan的方法,且可以省去DFN数组,大大节省了空间.经过大量测试,已经无误.以下将分阶段阐述进行优化的过程. 第一阶段 下面来说一下 ...

  5. Centos 7.0 execute yum update ——File "/usr/libexec/urlgrabber-ext-down", line 75, in <module> 解决方式

    [打开这个文件:/usr/lib/python2.7/site-packages/urlgrabber/grabber.py找到elif errcode in (42, 55,56)   用  eli ...

  6. 版本控制之一:SVN服务器搭建与安装(转)

    Subversion是优秀的版本控制工具,其具体的的优点和详细介绍,这里就不再多说. 首先来下载和搭建SVN服务器. 现在Subversion已经迁移到apache网站上了,下载地址: http:// ...

  7. 小程序组件之picker和range-key的用法

        因为在微信小程序的官网上并没有range-key的例子以及实际用法,所以好多人不知道具体如何使用.然后我在这里对其进行一个简单的实现,并记录一些注意事项. 以下是官网给的说明:   具体的用法 ...

  8. 通过网络路径获取的图片 btye 图片流互转

    楼主有一个需要用户用的网站要上传图片,图片不保存到网站,而是要专门存放到一个图片服务器上面,于是需要通过byte的形式来传输 之前写的一个本地图片流转于byte互转 后来发现通过网络路径获取的图片这个 ...

  9. spring mvc常用注解的说明

    最近一段时间学习了springboot,所以熟悉一下mvc中常用的注解,这样可以方便开发 简介: @RequestMapping RequestMapping是一个用来处理请求地址映射的注解,可用于类 ...

  10. Restaurant

    Restaurant Time Limit:4000MS     Memory Limit:262144KB     64bit IO Format:%I64d & %I64u Submit  ...