三分钟学会java枚举类

什么是枚举 what

枚举类enum是jdk1.5引入的,全称enumeration,和class、interface的地位一样,存在java.lang包中

什么时候使用枚举 when

当变量的值在一个固定的范围内变化时,建议优先使用枚举

为什么使用枚举 why

正常我们声明常量时

public static final String SEASON_SPRING = "春天";
public static final String SEASON_SUMMER = "夏天";
public static final String SEASON_AUTUMN = "秋天";
public static final String SEASON_WINTER = "冬天";

使用枚举时

public enum Season{
	SPRING,SUMMER,AUTUMN,WINTER
}

使用枚举更加直观,更加安全,枚举类为每个实例自动添加了public static final修饰符。

如何使用枚举how

最简单的枚举就像上面代码那样,在需要使用的地方就可以直接引用了,你没听错,直接Season.SPRING就能拿到这个实例,不用new。

其次,我们还可以为每个实例增加属性值,注意实例名称必须写在第一行

public enum Season{
	SPRING("春天"),
	SUMMER("夏天"),
	AUTUMN("秋天"),
	WINTER("冬天");

	private final String name;

	Season(String name){
		this.name = name;
	}

	public String getName() {
        return name;
    }
}

再者,我们还可以在枚举类中声明接口,每个实例都需要重写该接口

public enum Season{
    SPRING("春天") {
        @Override
        public String hello(String str) {
            return "春天" + str;
        }
    },
    SUMMER("夏天") {
        @Override
        public String hello(String str) {
            return "夏天" + str;
        }
    },
    AUTUMN("秋天") {
        @Override
        public String hello(String str) {
            return "秋天" + str;
        }
    },
    WINTER("冬天") {
        @Override
        public String hello(String str) {
            return "冬天" + str;
        }
    };

    abstract String hello(String str);

    private final String name;

    Season(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }
}

此时,Season作为一个接口,每个实例则是Season的匿名内部类
三分钟学会java枚举类_第1张图片

当然,枚举类也可以在switch中使用。

你可能感兴趣的:(on,the,way)