枚举

1.1 枚举类

一些方法在运行时,它须要的数据不能是任意的,而必须是必定范围内的值,此类问题在JDK5之前采用自定义带有枚举功能的类解决,Java5之后能够直接使用枚举予以解决。java

例如交通灯(红、黄、绿)    性别(男、女)   星期(星期1、2、三…..)设计模式

     分数等级(ABCDE)ide

JDK 5新增的 enum 关键字用于定义一个枚举类。函数

枚举的实现this

使用enum定义枚举类spa

在枚举类中定义枚举值(大写)设计

enum Gender {对象

MALE, FEMALE;继承

}接口

使用javap命令

 

 

发现其中每个枚举值都是枚举类的具体实例对象.只不过是静态常量.

枚举类具备以下特性:

枚举类也是一种特殊形式的Java类。

枚举类中声明的每个枚举值表明枚举类的一个实例对象。

java中的普通类同样,在声明枚举类时,也能够声明属性、方法和构造函数.

public class Demo1 {

public static void main(String[] args) {

Gender male = Gender.MALE;

System.out.println(male.getInfo());

}

}

 

enum Gender {

MALE(""), FEMALE;

 

// 成员变量

private String info;

 

// 构造函数

private Gender() {

 

}

 

private Gender(String info) {

this.info = info;

}

 

// 成员方法

public String getInfo() {

return info;

}

 

}

枚举类能够声明抽象方法,可是要有具体的枚举值去实现.

public class Demo1 {

public static void main(String[] args) {

Gender male = Gender.MALE;

System.out.println(male.getInfo());

male.speak();

}

}

 

enum Gender {

MALE("") {

@Override

public void speak() {

System.out.println("是男人");

}

},

FEMALE {

@Override

public void speak() {

System.out.println("是女人");

}

};

 

// 成员变量

private String info;

 

// 构造函数

private Gender() {

 

}

 

private Gender(String info) {

this.info = info;

}

 

// 成员方法

public String getInfo() {

return info;

}

 

public abstract void speak();

 

}

 

枚举类也能够实现接口(序列化)、或继承抽象类。

JDK5中扩展了swith语句,它除了能够接收int, byte, char, short外,还能够接收一个枚举类型(enum)

public class Demo2 {

public static void main(String[] args) {

WeekDay mon = WeekDay.MON;

switch (mon) {

case MON:

System.out.println("星期一要上班...");

break;

case TUE:

System.out.println("星期二,继续上班...");

break;

}

}

}

 

enum WeekDay {

MON, TUE, WED, THU, FRI, SAT, SUN;

}

 

 

若枚举类只有一个枚举值,则能够看成单态设计模式使用。

练习:

请编写一个关于星期几的枚举WeekDay,要求:枚举值:Mon,Tue,Wed,Thu,Fri,Sat,Sun 该枚举要有一个方法,调用该方法返回中文格式的星期。

enum WeekDay {

MON {

 

@Override

public String getInfo() {

 

return "星期一";

}

 

},

TUE {

@Override

public String getInfo() {

 

return "星期二";

}

},

WED {

@Override

public String getInfo() {

 

return "星期三";

}

},

THU {

@Override

public String getInfo() {

 

return "星期四";

}

},

FRI {

@Override

public String getInfo() {

 

return "星期五";

}

},

SAT {

@Override

public String getInfo() {

 

return "星期六";

}

},

SUN {

@Override

public String getInfo() {

 

return "星期天";

}

};

 

public abstract String getInfo();

}

相关文章
相关标签/搜索
本站公众号
   欢迎关注本站公众号,获取更多信息