本文目录
Java基础——枚举可以这么用
写在前面
小付在设计查阅资料类型时,突然想给几个类型差不多的东西分成一个类别,Java中固定的那几个常量定义过去麻烦,我才回想起来还有枚举这个东东,想着基本没怎么使用了,就总结了最基础的用法,于是就有了这篇文章…
枚举概念
枚举是什么?
枚举就好比日常生活中星期的MONDAY,TUESDAY,WEDNESDAY,THURSDAY,FRIDAY,SATURDAY,SUNDAY就是一个典型的枚举。通常用来表示一个集列出又穷序列集的所有成员的程序。
枚举自JDK1.5更新之后就迎来了这个新的类型——enum。
枚举的常见用法
用法一:常量
用法一:常量
在枚举出来之前,我们通常都是通过:public static final xxx
来定义常量的,而枚举问世后,可以把很多内容相关的常量分配到一个枚举类型中,而且这些在枚举类中的存在更多的其他方法。
代码实现:
public enum Season {
//春
SPRING,
//夏
SUMMER,
//秋
AUTUMN,
//冬
WINTER
}
用法二:switch-case语句
用法二:switch-case语句
没想到吧!enum也可以出现在我们的switch-case语句当中,使得代码可读性更强的同时,也完善了不同开发人员之间的沟通。
代码实现:
class SeasonCard{
public Season getSeason(Season season){
switch (season){
case SPRING:
return Season.SPRING;
case SUMMER:
return Season.SUMMER;
case AUTUMN:
return Season.AUTUMN;
case WINTER:
return Season.WINTER;
default:
throw new RuntimeException("枚举内容出错误!");
}
}
}
用法三:枚举类型中添加方法
用法三:枚举类型中添加方法
可以在枚举类中定义成员变量、构造方法、静态方法等
代码实现:
public enum Season {
//春
SPRING,
//夏
SUMMER,
//秋
AUTUMN,
//冬
WINTER;
private long id;
private Date startDate;
Season() {
}
Season(long id, Date startDate) {
this.id = id;
this.startDate = startDate;
}
public static void getEndDate(){
System.out.println("End Date : "+ new Date(System.currentTimeMillis() + 1000*3600*24*90L).toString());
}
public long getId() {
System.out.println("ID :" + id);
return id;
}
public Date getStartDate() {
System.out.println("Start Date:"+startDate.toString());
return startDate;
}
}
用法四:覆盖枚举中的方法
用法四:覆盖枚举中的方法
比如覆盖 toString()方法
public enum Season {
//春
SPRING,
//夏
SUMMER,
//秋
AUTUMN,
//冬
WINTER;
private long id;
private Date startDate;
Season() {
}
Season(long id, Date startDate) {
this.id = id;
this.startDate = startDate;
}
@Override
public String toString() {
return "Season" + this.id + this.startDate;
}
}
用法五:枚举可以实现接口但是不能继承其他类
用法五:枚举可以实现接口但是不能继承其他类
因为在Java中明确规定了是不支持多继承,所以枚举类型已经继承了java.lang.Enum不能在继承其他类。
代码实现:
public enum Season implements CardInfo{
//春
SPRING,
//夏
SUMMER,
//秋
AUTUMN,
//冬
WINTER;
private long id;
private Date startDate;
Season() {
}
Season(long id, Date startDate) {
this.id = id;
this.startDate = startDate;
}
@Override
public String getInfo() {
return new Customer().getName();
}
}
interface CardInfo{
public abstract String getInfo();
}
用法六: 使用接口组织枚举
用法六: 使用接口组织枚举
代码实现:
interface CardInfo{
public abstract String getInfo();
enum VIP implements CardInfo{
//VIP等级
VIP1,
VIP2;
@Override
public String getInfo() {
return VIP1.name();
}
}
enum SVIP implements CardInfo{
//SVIP等级
SVIP1,
SVIP2;
@Override
public String getInfo() {
return SVIP1.name();
}
}
}
用法七:枚举集合的使用
用法七:枚举集合的使用
java.util.EnumSet和java.util.EnumMap是两个枚举集合。
EnumMap中的key是enum类型value是任意类型。
二者区别 参考于JDK8开发文档。
感谢
感谢 大师兄 的相关见解博客
用例均为小付自行设计
大家看看就可以明白其中意思
写在最后
以上就是枚举类型的相关用法,现在实际开发中已经很少使用了,
大家熟悉下他的基本使用就好了,因为如果连枚举都不知到的话确实
有点 容易引起同行的...
最后的最后
还是那句话
每天进步点 每天收获点
愿诸君 事业有成 学有所获
如果觉得不错 别忘啦一键三连哦~