2.常用方法
静态的values()方法,可获取所有成员变量并以数组形式返回;从Object继承的toString()方法被重写;静态的valueOf()方法,可以尝试将指定的String类型转换为枚举类型;ordinal()方法,获取枚举成员的索引;compareTo()方法,比较两个枚举成员的顺序.
Java代码 收藏代码
public class EnumDemo2 {
public static void main(String[] args) {
for (Sex sex : Sex.values()) {
System.out.println(sex);
}
}
}
执行此段代码,可遍历输出枚举中的所有成员,运行结果:
MAN
WOMAN
3.在switch中应用
在switch中使用枚举类型,增加了程序的可读性.
Java代码 收藏代码
public class EnumDemo3 {
private enum Sex {
MAN, WOMAN
}
public static void showSex(Sex sex) {
switch (sex) {
case MAN:
System.out.println("男");
break;
case WOMAN:
System.out.println("女");
break;
}
}
public static void main(String[] args) {
showSex(Sex.WOMAN);
}
}
4.深入枚举类型
使用enum定义的枚举类型都是继承java.lang.Enum类,每一个成员都是枚举类型的一个实例,默认是final的,同时也是public和static的,与类中的静态常量相同,可以通过类名直接使用.
4.1.在枚举中定义属性和方法
Java代码 收藏代码
public enum Sex {
MAN, WOMAN;
public String name;
public void show() {
System.out.println(this.name);
}
}
注意,枚举成员必须写在最前面,否则编译出错.
4.2.构造方法
Java代码 收藏代码
public enum Sex {
MAN, WOMAN;
public String name;
private Sex() {
}
private Sex(String name) {
this.name = name;
}
}
枚举类型的构造方法必须是私有的,可以形成重载;如果枚举中只含有一个成员,则与单例模式相似.
4.3.成员匿名类
每一个成员可以调用构造方法,定义属性和方法(暂时不知有何用处),重写枚举中的方法.
Java代码 收藏代码
public enum Sex {
MAN() {
public void show() {
System.out.println("man");
}
},
WOMAN("name") {
public int age;
public void test() {
}
};
private Sex() {
}
private Sex(String name) {
}
public void show() {
System.out.println("sex");
}
}
public class EnumDemo4 {
public static void main(String[] args) {
for (Sex sex : Sex.values()) {
sex.show();
}
}
}
编译完成后,会生成Sex$1.class和Sex$2.class文件,运行结果:
man
sex
5.实现接口
由于枚举已经继承Enum类,不能在继承其他类,但可以实现接口.
Java代码 收藏代码
public interface I {
void i();
}
public enum Sex implements I {
MAN() {
public void i() {
System.out.println("man");
}
},
WOMAN() {
};
public void i() {
System.out.println("sex");
}
}
public class EnumDemo5 {
public static void main(String[] args) {
for (Sex sex : Sex.values()) {
sex.i();
}
}
}