咸鱼学Java-Java中的枚举类
原创
©著作权归作者所有:来自51CTO博客作者MC43700000046E4的原创作品,请联系作者获取转载授权,否则将追究法律责任
枚举类的定义
枚举类的个数和属性是固定的不允许被修改的。如人只有男人和女人。
自己实现的枚举类
个数固定属性固定,根据这个需求我们可以知道
在自己实现枚举类的时候需要注意
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()
通过遍历可以获取到所有的枚举对象