java使用枚举做审核_JAVA—枚举

前言:枚举是一种规范它规范了参数的形式,这样就可以不用考虑类型的不匹配并且显式的替代了int型参数可能带来的模糊概念 枚举像一个类,又像一个数组。Enum作为Sun全新引进的一个关键字,看起来很象是特殊的class, 它也可以有自己的变量,可以定义自己的方法,可以实现一个或者多个接口。

当我们在声明一个enum类型时,我们应该注意到enum类型有如下的一些特征。

1.它不能有public的构造函数,这样做可以保证客户代码没有办法新建一个enum的实例。

2.所有枚举值都是public , static , final的。注意这一点只是针对于枚举值,我们可以和在普通类里面定义 变量一样定义其它任何类型的非枚举变量,这些变量可以用任何你想用的修饰符。

3.Enum默认实现了java.lang.Comparable接口。

4.Enum覆载了了toString方法,因此我们如果调用Color.Blue.toString()默认返回字符串”Blue”.

5.Enum提供了一个valueOf方法,这个方法和toString方法是相对应的。调用valueOf(“Blue”)将返回Color.Blue.因此我们在自己重写toString方法的时候就要注意到这一点,一把来说应该相对应地重写valueOf方法。

6.Enum还提供了values方法,这个方法使你能够方便的遍历所有的枚举值。

7.Enum还有一个oridinal的方法,这个方法返回枚举值在枚举类种的顺序,这个顺序根据枚举值声明的顺序而定,这里Color.Red.ordinal()返回0。

一、技术总结

public class TestEnum {

/**

* 普通枚举

*/

public enum ColorEnum {

red, green, yellow, blue;

}

/**

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

*/

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;

}

}

/**

* 实现带有构造器的枚举

*/

public enum Gender{

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

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

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

private final String value;

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

Gender(String value) {

this.value = value;

}

public String getValue() {

return value;

}

}

/**

* 订单状态

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

*/

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());

}

}

}

二、常用单词

decimal 小数的

enum 枚举

ordinal 顺序的、依次的

Order 订单

State 状态

三、个人见解

枚举就像是一个类有自己的枚举名称,还有自己的枚举属性、构造方法和变量,之前我一直认为枚举就是一种和数组类似的东西,直接创建枚举然后使用即可,不过现在,我觉得,这个新生的枚举真的很强大,他可以帮助我们创建一系列不希望客户改变的数据量,并提供处理他们的方法。枚举的出现大大简化了之前程序员希望对数据进行处理的代码,一些符合枚举情况的数据可以直接新建一个枚举类型,并给出属性、方法即可。枚举很强大,我会在这几天好好熟悉一下枚举,认识枚举。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/504636.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【学习笔记】网络层——网络层设备、移动IP、IP组播

文章目录一. 网络层设备1)三层设备的区别2)路由表与路由转发二. 移动IP① 定义相关术语:实际过程:三. IP组播① IP数据报的三种传输方式② IP组播地址③ IGMP协议与组播路由选择协议网际组管理协议IGMP组播路由选择协议一. 网络层…

larval+mysql+不等于_MySQL学习日记(19)比较运算符

比较运算符比较对象 比较运算符 子查询mysql> SELECT * FROM 运算符例子;----------| id | 数值 |----------| 1 | 1 || 2 | 3 || 3 | 5 || 4 | 7 || 5 | 9 || 6 | 11 || 7 | 13 |----------7 rows in set (0.01 sec)mysql> SELECT * FROM 运算符例子2;----------| id | …

【学习笔记】路由算法与路由协议:RIP协议与距离向量算法、OSPF协议与链路状态算法、BGP协议

文章目录一. 路由算法与路由协议概述① 路由算法的分类② 分层次的路由选择协议二. RIP协议和距离向量算法① RIP协议定义② RIP协议:交换对象、交换周期、交换内容③ 距离向量算法例题1例题2④ RIP协议的报文格式⑤ RIP协议:好消息传得快,坏…

matlab 编译 java_MATLAB编译器运行时(MCR)编译器

我用我的文件打包了7.13 MCR编译器(通过desploytool) .假设客户端安装了MCR,我有一些问题 .1) If the client doesnt have MATLAB, but just the MCR. he will be able to run my application by the MCR?2) how can the client make the MCR compiler to be the d…

【学习笔记】传输层:概述、UDP协议

文章目录一. 概述1)传输层的寻址与接口二. UDP协议1)定义2)首部格式3)UDP检验一. 概述 是主机才有的层次 两个协议:TCP & UDPTCP面向连接,UDP则不是QQ发一条信息(UDP);发一个大文件(TCP&am…

java ajax无权限跳转_如何在ajax权限判断后跳转?

经常会遇到一种场景,直接访问某些权限被拒绝后跳转登陆页面,然而ajax不会跳转这个时候使用全局的:$(function(){//全局的ajax访问,处理ajax清求时sesion超时$.ajaxSetup({complete:function(XMLHttpRequest,textStatus){var sessi…

【学习笔记】传输层:TCP协议(报文段、连接管理{握手}、可靠传输、流量控制、拥塞控制)

文章目录一. 协议特点 & 报文段① 特点② 报文段首部格式二. TCP连接管理① 建立联系(三次握手)SYN洪泛攻击② 连接释放(四次挥手)三. TCP流量控制① 序号② 重传冗余ACK(快速重传)三. 流量控制① 定义…

空调调节 java_空调调节方式

只能手动对冷/热风的温度和风量进行粗略的分级调节,不能设定车内空调的具体温度。拨动控制板上的功能键对温度、风速、风向进行控制。手动空调的优点在操作简单明了,方便,几乎任何事情都在弹指间完成操作。对于风速和风向的调节随心所欲。自动…

【学习笔记】网络层:应用模型、DNS系统、文件传输协议FTP

文章目录一. 应用层概述① 客户/服务器(C/S)模型② P2P模型(对等模型)二. DNS系统① 定义② 域名③ 域名服务器④ 域名解析过程三. 文件传输协议FTP① 定义② FTP服务器和用户端③ FTP工作原理附加:两种FTP传输模式一. 应用层概述 应用层&am…

logminer java_使用OracleLogminer同步Demo1Demo介绍-博客园.PDF

使用OracleLogminer同步Demo1Demo介绍-博客园使用Oracle Logminer 同步Demo1 Demo 介绍1.1 Demo 设想前面介绍了Oracle LogMiner 配置使用以及使用LogMiner 进行解析日志文件性能,在这篇文章中将利用 LogMiner 进行数据同步,实现从源目标数据库到目标数据…

【学习笔记】应用层——电子邮件、万维网、HTTP协议

文章目录一. 电子邮件① 电子邮件的信息格式② 组成结构③ 简单邮件传送协议SMTP定义SMTP通信的三个阶段SMTP的缺点 & MIME④ 邮局协议POP3定义网际报文存取协议IMAP⑤ 基于万维网的电子邮件二. 万维网和HTTP协议① 万维网的定义及概念② 超文本传输协议HTTP定义与概念特点…

mysql 自身参照自身_MySQL入门

1.SQL查询操作select的“另类”用法我们通常习惯select from从数据表中读取数据,不过实际上select并不一定要去读取数据库中的内容。比如:select 11; 返回2select now(); 返回当前时间select本身代表要返回的内容,至于与数据库表中存的数据是…

【LeetCode笔记】1. 两数之和(JAVA、哈希表)

文章目录一. 题目描述二. 解法① 暴力破解② 静态哈希表1. 为什么用哈希表来做2. 特殊情况:两数相同,map映射覆盖③ 动态哈希表④ 未解之谜诶嘿,经典开头题目 一. 题目描述 数组中同一个元素不能使用两遍: 见实例2,实…

java spring入门小程序_springMVC学习笔记(二)-----注解和非注解入门小程序

最近一直在做一个电商的项目,周末加班,忙的都没有时间更新博客了。终于在上周五上线了,可以轻松几天了。闲话不扯淡了,继续谈谈springMvc的学习。现在,用到SpringMvc的大部分使用全注解配置,但全注解配置也…

【Effective Java】第二章:静态工厂、构建器、强化Singleton属性、私有构造器、

文章目录一. 用静态工厂方法代替构造器优势:劣势:实例代码:二. 遇到多个构造器参数时要考虑使用构建器① 重叠构建器② JavaBeans模式③ Builder模式三. 用私有构造器或枚举类型强化Singleton属性方法一:公有静态成员是个final域方…

java bytearrayoutputstream 文件_Java ByteArrayInputStream和ByteArrayOutputStream示例

ByteArrayInputStream和ByteArrayOutputStream分别从内存中的字节数组读取数据并将数据写入内存中的字节数组。下面是一个演示ByteArrayInputStream的示例。文件:ByteArrayInputStreamExample.java -package com.yiibai.tutorial.io;import java.io.ByteArrayInputS…

【LeetCode笔记】2. 两数相加(JAVA、链表)

文章目录题目描述代码题目描述 解法:直接用两个链表构造出第三个链表即可注意点:进位carry。进位的情况有几种,都要考虑上。(其实感觉这道题不是很难,挺直观的) 代码 时间复杂度:O(max(m,n)…

java velocity是什么意思_基于 Java 的模板引擎Velocity快速入门

最近使用Velocity模板引擎,写一个maven项目Coding生成工具。对基于Java的模板引擎Velocity的demo总结如下:Step1. 创建Maven项目,添加如下velocity的dependency到pom.xml中org.apache.velocityvelocity1.7Step2. 创建模板文件HelloVelocity.v…

【LeetCode笔记】3. 无重复字符的最长子串(JAVA、滑动窗口、字符串)

文章目录题目描述思路 && 代码1. 之前的版本更新 2.0题目描述 子串:各字符间必须要相邻,而非子序列使用滑动窗口来做就行 思路 && 代码 1. 之前的版本 思路:维护一个滑动窗口,滑动窗口中容纳一个无重复字符的…

启动java服务时刷新缓存_Spring java项目对外提供服务和java进程启动时bean,内部缓存加载的先后关系?...

Spring java项目对外提供服务有这么几种,一种是web服务,譬如tomcat,一种是RPC服务,譬如dubbo,thrift。总的来说就是对外开放某个/些端口,接收请求。Spring工程项目启动时,bean会加载&#xff0c…