枚举类

引入

数学上的枚举法:

举例:1<x<3 , 2<y<6,

求x+y<8的有多少个

java上的枚举

类的对象是有限个,并且是确定的,就可以使用枚举类。

举例:星期一,二,三。。。日。

自定义枚举类:(JDK1.5之前)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
public class Mydate {
//属性
private final String dateName;//星期几
private final String dateDesc;//星期的描述
//属性已经被private final修饰了,利用构造器赋值
//构造器也私有,外界不能调用,只能自己内部调用
private Mydate(String dateName, String dateDesc){
this.dateName=dateName;
this.dateDesc=dateDesc;
}
//提供的枚举类对象是有限的
public static final Mydate FRIDAY= new Mydate("星期五","放假咯");
public static final Mydate SUNDAY= new Mydate("星期日","啊好烦");
//额外的get方法,toString()

public String getDateName() {
return dateName;
}

public String getDateDesc() {
return dateDesc;
}
//toString();

@Override
public String toString() {
return "Mydate{" +
"dateName='" + dateName + '\'' +
", dateDesc='" + dateDesc + '\'' +
'}';
}
}

测试类:

1
2
3
4
5
6
7
8
public class Test01 {
//这是一个main方法,是程序的入口:
public static void main(String[] args) {
Mydate f = Mydate.FRIDAY;
System.out.println(f/*.toString()*/);
System.out.println(f.getDateName());
}
}

JDK1.5之后有了==enum关键字==创建枚举类,使用方法跟上面类似

1
2
3
4
5
6
7
public enum Mydate {
/*//提供的枚举类对象是有限的
public static final Mydate FRIDAY= new Mydate("星期五","放假咯");
public static final Mydate SUNDAY= new Mydate("星期日","啊好烦");*/
FRIDAY("星期五","放假咯"),
SUNDAY("星期日","啊好烦");

==注意:要将对象放到最前,并且对象间用逗号连接==

==enum上层父类是java.lang.Enum,我们自定义的父类是Object==

通常使用enum关键字创建枚举类是这样的

1
2
3
4
public enum Mydate{
FRIDAY,
SUNDAY;
}

而java.lang.Eunm包下有常用方法可以直接用

toSting();返回类名

values:返回枚举类对象数组

valueOf:获取对象

枚举类实现接口

枚举类实现接口,并且重写方法,方法直接用,所有枚举对象调用方法的时候,都是同一个方法,结果都是一样的。

想要结果不一样,可以在对象后面重写。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
public enum Mydate implements TestInterface{
FRIDAY{
@Override
public void show(){
System.out.println("放假了");
}
},
SUNDAY{
@Override
public void show(){
System.out.println("烦躁");
}
};
}
1
2
3
public interface Interface{
void show();
}