枚举(替换多例设计)
目的(使用场景)
不用也没啥
定义一个描述性别的类,那么该对象只有两个:男、 女。或者描述颜色基色的类,可以使用: 红色、绿色、蓝色。
功能
用于定义有限个数对象的一种结构(多例设计进化版)
方法
enum 关键字
提供有enum
的关键字,直接放在枚举类前。
java
enum Color{ // 枚举类
RED,GREEN,BLUE ; // 实例化对象
}
public class JavaDemo {
public static void main(String args[]) {
Color c = Color.RED; // 获取实例化对象
System.out.println(c);
}
}
values 方法
可通过 values() 方法获得其中所有的内容。
java
enum Color{ // 枚举类
RED,GREEN,BLUE ; // 实例化对象
}
public class JavaDemo {
public static void main(String args[]) {
for (Color c : Color.values()){
System.out.println(c);
}
}
}
应用
枚举与 switch 处理
java
enum Color{ // 枚举类
RED,GREEN,BLUE ; // 实例化对象
}
public class JavaDemo {
public static void main(String args[]) {
Color c = Color.RED; // 获取实例化对象
switch(c) { // 直接支持枚举
case RED:
System.out.println("红色");
break;
case GREEN:
System.out.println("绿色");
break;
case BLUE:
System.out.println("蓝色");
break;
}
}
}
实例应用
定义 person 类中,性别使用枚举类型。
java
enum Sex {
MALE("男"), FEMALE("女");
private String title;
private Sex(String) {
this.title = title;
}
public String toString(){
return this.title;
}
}
class Person {
private String name;
private int age;
private Sex sex;
public Person(String name, int age, Sex sex){
this.name = name;
this.age = age;
this.sex = sex;
}
public String toString() {
return "姓名: " + this.name + "、年龄:" + this.age + "、性别:" + this.sex;
}
}
public class JavaDemo {
public static void main(String args[]) {
System.out.println(new person("张三", 24, Sex.MALE)); // 此处传入的参数就必须是由枚举中来
}
}
对于该程序而言,不用枚举也能实现,因此对于枚举来说,愿意使用就使用,不愿意使用就不用。