咸鱼学Java-Java中的枚举类

版权声明:本文为博主原创文章,转载请注明出处! https://blog.csdn.net/qq_38345606/article/details/81160700

枚举类的定义

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

自己实现的枚举类

个数固定属性固定,根据这个需求我们可以知道
在自己实现枚举类的时候需要注意
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()通过遍历可以获取到所有的枚举对象

猜你喜欢

转载自blog.csdn.net/qq_38345606/article/details/81160700
今日推荐