不积跬步,无以至千里;不积小流,无以成江海。
Java语言基础
枚举
单例模式中,一个类只有一个实例。而枚举其实就是多例,一个类有多个实例,但实例的个数不是无穷的,是有限个数的。
- 定义枚举类型
使用enum关键字:
例子:
public enum Direction {
FRONT, BEHIND, LEFT, RIGHT;
}
Direction d = Direction.FRONT;
注意:
1. 定义枚举类的关键字是enum,而不是Enum,所有关键字都是小写的!
2. 其中FRONT、BEHIND、LEFT、RIGHT都是枚举项,它们都是本类的实例。
3. 在定义枚举项时,多个枚举项之间使用逗号分隔,最后一个枚举项后需要给出分号!
4. 不能使用new来创建枚举类的对象,因为枚举类中的实例就是类中的枚举项,所以在类外只能使用类名.枚举项。
- 构造器,变量,方法
枚举类也可以有构造器,构造器默认都是private修饰,而且只能是private。因为枚举类的实例不能让外界来创建!
public enum Color {
RED(1, "红色"), GREEN(2, "绿色"), BLANK(3, "白色"), YELLO(4, "黄色");
// 成员变量
private int index;
private String name;
// 构造方法
private Color(int index, String name) {
this.index = index;
this.name = name;
}
// 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;
}
}
调用:
Color.RED.getName()
- 实现接口
枚举类还可以实现接口
public interface Behaviour { void print(); String getInfo(); } public enum Color implements Behaviour{ RED(1, "红色"), GREEN(2, "绿色"), BLANK(3, "白色"), YELLO(4, "黄色");
// 成员变量 private int index;
private String name;
// 构造方法 private Color(int index, String name) { this.name = name; this.index = index; } //接口方法 @Override public String getInfo() { return this.name; } //接口方法 @Override public void print() { System.out.println(this.index+":"+this.name); } }