本文转载自: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. Rolling Hash(Rabin-Karp算法)匹配字符串

    您可以在我的个人博客中访问此篇文章: http://acbingo.cn/2015/08/09/Rolling%20Hash(Rabin-Karp%E7%AE%97%E6%B3%95)%E5%8C%B ...

  2. 在打开Dreamweaver软件情况下,vs2010 asp项目无法调试

    会出现以下情况,只要关闭Dreamweaver就可以正常调试vs2010 asp项目.

  3. C# 使用HtmlAgilityPack抓取网页信息

    前几天看到一篇博文:C# 爬虫 抓取小说 博主使用的是正则表达式获取小说的名字.目录以及内容. 下面使用HtmlAgilityPack来改写原博主的代码 在使用HtmlAgilityPack之前,可以 ...

  4. setjmp和longjmp用法

    本文转自:http://blog.csdn.net/wuhong40/article/details/6155838,感谢原文作者. 前不久在阅读Quake3源代码的时候,看到一个陌生的函数:setj ...

  5. Express+Mongoose(MongoDB)+Vue2全栈微信商城项目全记录

    最近用vue2做了一个微信商城项目,因为做的比较仓促,所以一边写一下整个流程,一边稍做优化. 项目github地址:https://github.com/seven9115/vue-fullstack ...

  6. mybatis generator eclipse插件的安装

    mybatis generator 可以提高开发速度,这个插件可以自动生成代码,创建DAO层相关代码,就像利用HIbernate反相生成一样,安装前可以先到百度网盘下载: 文件:MyBatisGene ...

  7. webpack安装教程及实例

    在控制台输入: npm install webpack -g 这是全局的安装,如果需要局部安装,在控制台cd 打开到指定目录,输入: npm install webpack --save-dev 即可 ...

  8. Ionic3 启动页以及应用图标

    将新的启动页和应用图标图片(最好是高清png)上传到根目录 resources 使用命令自动生成,通过CMD进入项目所在文件夹,分别执行 ionic cordova resources android ...

  9. Fibonacci Numbers

    Fibonacci Numbers Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) T ...

  10. Problem E 

    Problem Description 省政府"畅通工程"的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可).现得到城镇道路统计 ...