博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java枚举使用详解
阅读量:6332 次
发布时间:2019-06-22

本文共 2986 字,大约阅读时间需要 9 分钟。

在实际编程中,往往存在着这样的“数据集”,它们的数值在程序中是稳定的,而且“数据集”中的元素是有限的。

例如星期一到星期日七个数据元素组成了一周的“数据集”,春夏秋冬四个数据元素组成了四季的“数据集”。

在java中如何更好的使用这些“数据集”呢?因此枚举便派上了用场,以下代码详细介绍了枚举的用法。

package
com.ljq.test;
/**
* 枚举用法详解
*
*
@author
jiqinlin
*
*/
public
class
TestEnum {
/**
* 普通枚举
*
*
@author
jiqinlin
*
*/
public
enum
ColorEnum {
red, green, yellow, blue;
}
/**
* 枚举像普通的类一样可以添加属性和方法,可以为它添加静态和非静态的属性或方法
*
*
@author
jiqinlin
*
*/
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;
}
}
/**
* 性别
*
* 实现带有构造器的枚举
*
*
@author
jiqinlin
*
*/
public
enum
Gender{
//
通过括号赋值,而且必须带有一个参构造器和一个属性跟方法,否则编译出错
//
赋值必须都赋值或都不赋值,不能一部分赋值一部分不赋值;如果不赋值则不能写构造器,赋值编译也出错
MAN(
"
MAN
"
), WOMEN(
"
WOMEN
"
);
private
final
String value;
//
构造器默认也只能是private, 从而保证构造函数只能在内部使用
Gender(String value) {
this
.value
=
value;
}
public
String getValue() {
return
value;
}
}
/**
* 订单状态
*
* 实现带有抽象方法的枚举
*
*
@author
jiqinlin
*
*/
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());
}
}
}

转载于:https://www.cnblogs.com/gscq073240/articles/6445664.html

你可能感兴趣的文章
linux bunzip2命令
查看>>
敏捷个人:通过实践TOGAF来思考如何学习并应用新的方法?
查看>>
Android系统的开机画面显示过程分析(6)
查看>>
vivo Hi-Fi+QQ音乐 数字音乐市场的一剂良方
查看>>
Cocos2d-x 3.2 异步动态加载 -- 保卫萝卜开发总结
查看>>
聚焦触宝反侵权事件:中国创业者用什么护航海外市场大门
查看>>
AOP技术基础
查看>>
Android系统进程间通信(IPC)机制Binder中的Server启动过程源代码分析(2)
查看>>
无线802.11n 2.4G与5G性能测试
查看>>
子域名信息收集攻略
查看>>
[Android]开发数独游戏思路分析过程
查看>>
SpreadJS 类Excel表格控件 - V12 新特性详解
查看>>
理解并取证:IPv6与IPv4在报文结构上的区别
查看>>
EOS主网上线只是开始,如何运营决定未来
查看>>
不用Visual Studio,5分钟轻松实现一张报表
查看>>
(译)如何使用cocos2d和box2d来制作一个Breakout游戏:第一部分
查看>>
计算机图形学(一) 图形系统综述
查看>>
持续集成(CI)- 几种测试的区别(摘录)
查看>>
多用户虚拟Web3D环境Deep MatrixIP9 1.04发布
查看>>
求高手,求解释
查看>>