枚举
来源:互联网 发布:淘宝销售额怎么算 编辑:程序博客网 时间:2024/06/03 17:15
【参考资料】
javaenum(枚举)使用详解+总结http://www.cnblogs.com/hyl8218/p/5088287.html
Java枚举7常见种用法http://www.iteye.com/topic/1116193
枚举的本质其实就是一个类(继承自java.lang.Enum),
只不过定义的时候要指定好值集合,使用的时候只能用值集合中的值赋值。
值集合其实就是这个类的成员常量。
定义
1、普通的定义如下
Java Code
enum Signal1 {
RED, GREEN, YELLOW
}
2、还可以添加成员变量和成员方法(值集合后面要加分号)
Java Code
enum Signal2 {
RED, GREEN, YELLOW;// 值集合后面要加分号
// 成员变量
private int index;
private String name;
public int getIndex() {
return index;
}
public void setIndex(int index) {
this.index = index;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
3、还可以添加构造函数,但是添加了构造函数后,指定值集合时也要使用构造函数
(所以Java不能像C++一样指定值的index,只能通过这种方式扩展)
Java Code
enum Signal3 {
RED(0, "red"), GREEN(1, "green"), YELLOW(2, "yellow");// 值集合后面要加分号
private Signal3(int index, String name){
this.index=index;
this.name=name;
}
// 成员变量
private int index;
private String name;
public int getIndex() {
return index;
}
public void setIndex(int index) {
this.index = index;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
4、由于已经继承了Enum,所以定义的时候不能再继承其他类(可以重写Enum的方法),但是可以实现接口.
Java Code
interface Behaviour {
void print();
}
enum Signal4 implements Behaviour {
RED(0, "red"), GREEN(1, "green"), YELLOW(2, "yellow");// 值集合后面要加分号
private Signal4(int index, String name){
this.index=index;
this.name=name;
}
// 成员变量
private int index;
private String name;
public int getIndex() {
return index;
}
public void setIndex(int index) {
this.index = index;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public void print() {
}
}
使用
使用的时候只能用值集合中的值赋值。
可以像普通对象一样调用枚举对象的方法。(当然也可以使用Enum类中的方法)
Java Code
Signal4 s=Signal4.RED;
System.out.println(s.getName());
//还可以调用Enum类中的方法
for (Signal4 ss : Signal4.values()) {//遍历枚举类中的值集合
System.out.println(ss.ordinal());
System.out.println(ss.name());
}
还可以将枚举对象用于switch语句中(此时case语句中可以省略枚举类型前缀)
Java Code
switch (s) {
case RED://这里是Signal4.RED
break;
default:
break;
}
Signal3 sss=Signal3.RED;
switch (sss) {
case RED://这里是Signal3.RED //编译的时候竟然能够自动区分前缀
break;
default:
break;
}
- 枚举
- 枚举
- 枚举
- 枚举
- 枚举
- 枚举
- 枚举
- 枚举
- 枚举
- 枚举
- 枚举
- 枚举
- 枚举
- 枚举
- 枚举
- 枚举
- 枚举
- 枚举
- 二叉树遍历
- 一些常用的Maven命令和配置
- Spring+SpringMVC 配置事务管理无效原因
- Linux文件权限和目录配置
- android入门_采用android-async-http开源项目的GET方式或POST方式实现登陆案例
- 枚举
- 【整理】写给java web一年左右工作经验的人
- 如何将导航栏颜色设为透明
- Eclipse搭建jsp开发环境后建立jsp文件显示无法显示网页
- POJ2386——Lake Counting
- HTML基本结构
- C语言计算程序运行时间
- android 盒子 TV CheckBox 的三种状态
- 自定义View进阶-Canvas之图片文字