枚举(替换多例设计)
目的(使用场景)
不用也没啥
定义一个描述性别的类,那么该对象只有两个:男、 女。或者描述颜色基色的类,可以使用: 红色、绿色、蓝色。
功能
用于定义有限个数对象的一种结构(多例设计进化版)
方法
enum 关键字
提供有enum
的关键字,直接放在枚举类前。
enum Color{ // 枚举类RED,GREEN,BLUE ; // 实例化对象
}
public class JavaDemo {public static void main(String args[]) {Color c = Color.RED; // 获取实例化对象System.out.println(c);}
}
values 方法
可通过 values() 方法获得其中所有的内容。
enum Color{ // 枚举类RED,GREEN,BLUE ; // 实例化对象
}
public class JavaDemo {public static void main(String args[]) {for (Color c : Color.values()){System.out.println(c);}}
}
应用
枚举与 switch 处理
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 类中,性别使用枚举类型。
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)); // 此处传入的参数就必须是由枚举中来}
}
对于该程序而言,不用枚举也能实现,因此对于枚举来说,愿意使用就使用,不愿意使用就不用。