本文转载自: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. Hyper-v 虚拟机安装win7

    Hyper-v 是微软自带的虚拟机 一般安装win10都有 对小娜说:Hyper就会出现 进入Hyper-v 如果虚拟机不可用 启动服务 新建虚拟机 一般设置可以自己随意 虚拟机第一代才可以使用win ...

  2. win10 uwp Window.Current.Dispatcher中Current为null

    本文说的是进行网络中异步界面出现的错误,可能带有一定的主观性和局限性,说的东西可能不对或者不符合每个人的预期.如果觉得我有讲的不对的,就多多包含,或者直接关掉这篇文章,但是请勿生气或者发怒吐槽,可以在 ...

  3. JavaScript HTML Dom改变HTML

    本人为小白,首次写博客  有不正确的地方望多多指点与见谅!! 一,改变HTML的内容 语法: document.getElementById(id).innerHTML=new HTML: 具体用法: ...

  4. jfinal编码问题及解决

    使用jfinal出现了常见的编码问题情况 public void test() { Random r = new Random(); try { Connection conn = createCon ...

  5. 【计算机网络】应用层(一) HTTP

      HTTP报文 HTTP报文是HTTP应用程序间发送的数据块,它由三部分组成:起始行(start line),首部(header)和主体(body),如下图所示:   从分类上,报文又可以分为请求报 ...

  6. 文本处理工具(grep)

    文本处理工具:     Linux上文本处理三剑客:        文本过滤工具(模式:pattern)工具:          1.grep:支持基本正则表达式;          2.egrep: ...

  7. Cocos2d-x Lua游戏开发Mac环境搭建以及一点点感悟

    接触Cocos2d-x 最近由于公司项目的需要,自己开始接触Cocos,开始做一些简单的轻量级的游戏,以前没有接触过这一块的东西,也是借助这个机会学习一下游戏的开发,由于以前自己接触的全都是iOS和A ...

  8. Ajax中与服务器的通信【发送请求与处理响应】

    一.发送请求 Ajax中通过XMLHttpRequest对象发送异步方式的后台请求时.通常有两种方式的请求,一种是GET请求,另一种是POST请求.发送请求一般要经过4个步骤分别是: (1)初始化XM ...

  9. HDU 5242 Game(三个贪心)

    Game Time Limit: 3000/1500 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submis ...

  10. poj 2486 Apple Tree(树形DP 状态方程有点难想)

    Apple Tree Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 9808   Accepted: 3260 Descri ...