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

Java 枚举类型的基础和高级用法

2015-11-16 23:12 639 查看
    java枚举类型自从jdk1.5产生以来,在自己的工作用很少使用到,或许还是使用以前常量定义的方式,所以没有意识到枚举类型是可以替代的,关于使用常量方式来列举的用法不再陈述,相信在使用过程中大家如果会总结,总会发现一些弊端,下面看看枚举类型的用法,是可以替代上述的常量的方式列举事物的。

    最为常用的列举:
public enum Color {
RED, GREEN, BLANK, YELLOW
}

往枚举中添加自定义方法
public enum Color {
RED("红色", 1), GREEN("绿色", 2), 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 方法 忽略
}

上面的getName方法也就是自己定义的一个静态方法,可以直接使用,也就是说在枚举类型的内部,可以存在与枚举相关的方法,但是因为枚举本身被定义为final了,所以这种方法一般都是返回数据。 
覆盖枚举的方法
public enum Color {
RED("红色", 1), GREEN("绿色", 2), 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;
}
// get set 方法 忽略
}

这里的toString 方法,在没有重新之前,默认是可以直接调用的,但是其返回值为枚举的常量值,如:RED或YELLO等,但是复写之后,就可以实现自己定义的方式。

枚举实现接口
public interface Behaviour {
void print();
String getInfo();
}

public enum Color implements Behaviour{
RED("红色", 1), GREEN("绿色", 2), 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);
}
}

通过实现接口,能够实现其他的一些变量和接口中的方法,为枚举开拓更多的用法。

使用接口组织枚举
public interface Food {
enum Coffee implements Food{
BLACK_COFFEE,DECAF_COFFEE,LATTE,CAPPUCCINO
}
enum Dessert implements Food{
FRUIT, CAKE, GELATO
}
}
6.构造抽象方法,要求枚举实现
public enum Phone{
APPLE {double totalprice(double a,double b){return a+b;}},
HUAWEI {double totalprice(double a,double b){return a+b-2;}},
SUMSANG {double totalprice(double a,double b){return a+b-4;}};

abstract totalprice(doublea,double b);
}

这样,就可以讲不同的行为与每个枚举常量关联起来,使得每个枚举常量本身带有一个方法,最后通过常量类型调用该方法就是得到相应的值。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: