1 枚举
1.1 枚举的概述
枚举是 Java 中一种特殊的类,它可以定义固定数量的枚举实例,例如: 性别、交通信号灯、季节等等
1.2 为什么要使用枚举
假设我们要定义一个人类,人类中包含姓名和性别。通常会将性别定义成字符串类型,效果如下:
public class Person {
private String name;
private String sex;
public Person() {
}
public Person(String name, String sex) {
this.name = name;
this.sex = sex;
}
// 省略get/set/toString方法
}
public class Demo01 {
public static void main(String[] args) {
Person p1 = new Person("张三", "男");
Person p2 = new Person("张三", "abc"); // 因为性别是字符串,所以我们可以传入任意字符串
}
}
1不使用枚举存在的问题:可以给性别传入任意的字符串,导致性别是非法的数据,不安全。
1.3 枚举的作用
一个方法接收的参数是固定范围之内的时候,那么即可使用枚举类型(如:性别(男、女))
1.4 格式
enum 枚举名 {
第一行都是罗列枚举实例,这些枚举实例直接写大写名字即可。
}
1.5 入门案例
1.定义枚举:MALE表示男,FEMALE表示女
enum Gender {
MALE, FEMALE; // 男,女
}
2.Perosn中的性别有String类型改为Sex枚举类型
public class Person {
private String name;
private Gender gender;
public Person() {
}
public Person(String name, Gender gender) {
this.name = name;
this.gender = gender;
}
// 省略get/set/toString方法
}
3.使用是只能传入枚举中的固定值
public class Demo02 {
public static void main(String[] args) {
Person p1 = new Person("张三", Gender.MALE);
Person p2 = new Person("张三", Gender.FEMALE);
Person p3 = new Person("张三", "abc");
}
}
1.6 枚举中添加成员变量和成员方法
枚举的本质是一个类,所以枚举中还可以有成员变量,成员方法等。
public enum Gender {
MALE("男"), FEMALE("女");
public String tag;
Sex(String tag) {
this.tag = tag;
}
public void showTag() {
System.out.println("它的性别标志是: " + tag);
}
}
public class Demo03 {
public static void main(String[] args) {
Person p1 = new Person("张三", Sex.BOY);
Person p2 = new Person("张三", Sex.GIRL);
Sex.BOY.showTag();
Sex.GIRL.showTag();
}
}