本文转载自: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. C# 动态加载卸载 DLL

    我最近做的软件,需要检测dll或exe是否混淆,需要反射获得类名,这时发现,C#可以加载DLL,但不能卸载DLL.于是在网上找到一个方法,可以动态加载DLL,不使用时可以卸载. 我在写一个WPF 程序 ...

  2. jdk8 JAVA_OPTS

    JAVA_OPTS="-server -Xms1024m -Xmx1024m -XX:MetaspaceSize=512m -XX:MaxMetaspaceSize=512m -Djava. ...

  3. LeetCode 538. Convert BST to Greater Tree (把二叉搜索树转换成较大树)

    Given a Binary Search Tree (BST), convert it to a Greater Tree such that every key of the original B ...

  4. jquery的2.0.3版本源码系列(7):3043行-3183行,deferred延迟对象,对异步的统一管理

    目录 part1 deferred延迟对象 part2  when辅助方法 网盘源代码 链接: https://pan.baidu.com/s/1skAj8Jj 密码: izta part1 defe ...

  5. JMeter 压力测试使用CSV参数

    表示之前从没用过JMeter所以记录一下使用过程 Apache JMeter是Apache组织开发的基于Java的压力测试工具.用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测 ...

  6. Bluetooth A2DP --Audio payload type

    数据结构: 字段解释: payload type: 0x60(96), dynamic type type 定义: https://www.iana.org/assignments/rtp-param ...

  7. setsockopt()和getsockopt()函数参数

    setsockopt()函数功能介绍 功能描述: 获取或者设置与某个套接字关联的选项.选项可能存在于多层协议中,它们总会出现在最上面的套接字层.当操作套接字选项时,选项位于的层和选项的名称必须给出.为 ...

  8. (转)Spark性能优化:资源调优篇

      在开发完Spark作业之后,就该为作业配置合适的资源了.Spark的资源参数,基本都可以在spark-submit命令中作为参数设置.很多Spark初学者,通常不知道该设置哪些必要的参数,以及如何 ...

  9. git笔记------自己学习git的心得

    git个人学习总结: git是一个管理代码的版本控制系统,用git init创建一个git可以管理的仓库,这个仓库里有一个工作区,我们最基本的那些命令操作都是在工作区完成,在创建仓库的时候,在工作区里 ...

  10. Python CRM项目二

    一.准备工作 如果没有配置基本的项目,请参考 http://www.cnblogs.com/luhuajun/p/7771196.html 当我们配置完成后首先准备我们的app 创建2个app分别对应 ...