您的位置:首页 > 编程语言 > Java开发

java 枚举7常见种用法

2012-10-23 17:05 423 查看
DK1.5引入了新的类型——枚举。在Java中它虽然算个“小”功能,却给我的开发带来了“大”方便。

用法一:常量

在JDK1.5之前,我们定义常量都是:publicstaticfianl....。现在好了,有了枚举,可以把相关的常量分组到一个枚举类型里,而且枚举提供了比常量更多的方法。

Java代码



public
enum Color {

RED, GREEN, BLANK, YELLOW
}

Java代码



enum Signal {

GREEN, YELLOW, RED
}
public
class TrafficLight {

Signal color = Signal.RED;
public
void change() {

switch (color) {

case RED:

color = Signal.GREEN;
break;

case YELLOW:

color = Signal.RED;
break;

case GREEN:

color = Signal.YELLOW;
break;

}
}
}

enum Signal {
GREEN, YELLOW, RED
}
public class TrafficLight {
Signal color = Signal.RED;
public void change() {
switch (color) {
case RED:
color = Signal.GREEN;
break;
case YELLOW:
color = Signal.RED;
break;
case GREEN:
color = Signal.YELLOW;
break;
}
}
}


用法三:向枚举中添加新方法

如果打算自定义自己的方法,那么必须在enum实例序列的最后添加一个分号。而且Java要求必须先定义enum实例。

Java代码



public
enum Color {

RED("红色",
1), GREEN("绿色",
2), BLANK("白色",
3), YELLO("黄色",
4);
// 成员变量

private String name;

private
int index;

// 构造方法

private Color(String name,
int index) {

this.name = name;

this.index = index;

}
// 普通方法

public
static String getName(int index) {

for (Color c : Color.values()) {

if (c.getIndex() == index) {

return c.name;

}
}
return
null;

}
// get set 方法

public String getName() {

return name;

}
public
void setName(String name) {

this.name = name;

}
public
int getIndex() {

return index;

}
public
void setIndex(int index) {

this.index = index;

}
}

Java代码



public
enum Color {

RED("红色",
1), GREEN("绿色",
2), BLANK("白色",
3), YELLO("黄色",
4);
// 成员变量

private String name;

private
int index;

// 构造方法

private Color(String name,
int index) {

this.name = name;

this.index = index;

}
//覆盖方法

@Override
public String toString() {

return
this.index+"_"+this.name;

}
}

public enum Color {
RED("红色", 1), GREEN("绿色", 2), BLANK("白色", 3), YELLO("黄色", 4);
// 成员变量
private String name;
private int index;
// 构造方法
private Color(String name, int index) {
this.name = name;
this.index = index;
}
//覆盖方法
@Override
public String toString() {
return this.index+"_"+this.name;
}
}


用法五:实现接口

所有的枚举都继承自java.lang.Enum类。由于Java不支持多继承,所以枚举对象不能再继承其他类。

Java代码



public
interface Behaviour {

void print();

String getInfo();
}
public
enum Color
implements Behaviour{

RED("红色",
1), GREEN("绿色",
2), BLANK("白色",
3), YELLO("黄色",
4);
// 成员变量

private String name;

private
int index;

// 构造方法

private Color(String name,
int index) {

this.name = name;

this.index = index;

}
//接口方法

@Override
public String getInfo() {

return
this.name;

}
//接口方法

@Override
public
void print() {

System.out.println(this.index+":"+this.name);

}
}

Java代码



public
interface Food {

enum Coffee
implements Food{

BLACK_COFFEE,DECAF_COFFEE,LATTE,CAPPUCCINO
}
enum Dessert
implements Food{

FRUIT, CAKE, GELATO
}
}

public interface Food {
enum Coffee implements Food{
BLACK_COFFEE,DECAF_COFFEE,LATTE,CAPPUCCINO
}
enum Dessert implements Food{
FRUIT, CAKE, GELATO
}
}


用法七:关于枚举集合的使用

java.util.EnumSet和java.util.EnumMap是两个枚举集合。EnumSet保证集合中的元素不重复;EnumMap中的key是enum类型,而value则可以是任意类型。关于这个两个集合的使用就不在这里赘述,可以参考JDK文档。

关于枚举的实现细节和原理请参考:

参考资料:《ThinkingInJava》第四版
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: