枚举类的定义

枚举类的个数和属性是固定的不允许被修改的。如人只有男人和女人。

自己实现的枚举类

个数固定属性固定,根据这个需求我们可以知道
在自己实现枚举类的时候需要注意
1.private修饰构造器,让此对象不能在外部创建
2.属性前要用private final修饰防止被恶意修改
3.该类的所有实例应该用public static final修饰
我们可以自己写一个人类的枚举类

public class Person {

private final String NAME;
private final String SEX;

private Person(String name ,String sex){
this.NAME = name;
this.SEX = sex;
}

public static final Person MALE=new Person("Man","Male");
public static final Person FEMALE=new Person("Women","Female");
}

然后就可以通过​​Person.FEMALE(MALE)​​获取到对象

通过枚举类实现

public enum  Person {
MALE("Man","Male"),FEMALE("Women","Female");
private final String NAME;
private final String SEX;

Person(String name ,String sex){
this.NAME = name;
this.SEX = sex;
}
}

这样就可以​​Person.FEMALE(MALE)​​获取对象

怎么用枚举类实现接口

接口

public interface Show {
public void show();
}

两种方法
1.通过switch

public enum  Person implements Show{
MALE("Man","Male"),FEMALE("Women","Female");
private final String NAME;
private final String SEX;

Person(String name ,String sex){
this.NAME = name;
this.SEX = sex;
}

@Override
public void show() {
switch (this){
case MALE:
System.out.println("Male");
break;
case FEMALE:
System.out.println("Female");
break;
}
}
}

2.在每个枚举类中都分别进行实现

public enum  Person implements Show{
MALE("Man","Male"){
@Override
public void show() {
System.out.println("Male");
}
},FEMALE("Women","Female"){
@Override
public void show() {
System.out.println("Female");
}
};
private final String NAME;
private final String SEX;

Person(String name ,String sex){
this.NAME = name;
this.SEX = sex;
}
}

枚举类的方法

常用的三个
1.valueOf
通过枚举类的名字获取对象
Demo:​​​Person.valueOf("MALE")​​​这样就可以获取到MALE
2. Enum.valueOf()
通过类的CLASS和名称获取对应的对象
Demo:​​​Enum.valueOf(Person.class,"MALE")​​​获取MALE
3.values获取一个枚举对象数组
Demo:​​​Person[] values = Person.values()​​通过遍历可以获取到所有的枚举对象