Java 利用枚举实现接口进行统一管理
枚举公共接口
publicinterfaceIPairs{ /** *返回枚举对象 **/ Cget(); /** *返回枚举项的key **/ Kkey(); /** *返回枚举项的value **/ Vvalue(); }
状态枚举类
publicenumStatusEnumimplementsIPairs{ DISABLED(0,"recordhasbeendisabled"), ENABLED(1,"recordhasbeenenabled"), DELETES(9,"recordhasbeendeleted") ; privateintcode; privateStringdesc; StatusEnum(intcode,Stringdesc){ this.code=code; this.desc=desc; } publicStatusEnumget(){ returnthis; } @Override publicIntegerkey(){ returnthis.code; } @Override publicStringvalue(){ returnthis.desc; } }
响应枚举类
publicenumResponseEnumimplementsIPairs{ SUCCESS(10000,"success"), FAILED(10001,"failed") ; privateintcode; privateStringdesc; ResponseEnum(intcode,Stringdesc){ this.code=code; this.desc=desc; } publicResponseEnumget(){ returnthis; } @Override publicIntegerkey(){ returnthis.code; } @Override publicStringvalue(){ returnthis.desc; } }
代码验证
publicclassAnswerApp{
publicstaticvoidmain(String[]args){
invoke(StatusEnum.ENABLED);
System.out.println();
response(ResponseEnum.SUCCESS);
}
privatestaticvoidresponse(IPairspairs){
System.out.println(pairs.get()==ResponseEnum.SUCCESS);
System.out.println(MessageFormat.format("key:{0},value:{1}",pairs.key(),pairs.value()));
}
privatestaticvoidinvoke(IPairspairs){
System.out.println(pairs.get()==StatusEnum.ENABLED);
System.out.println(MessageFormat.format("key:{0},value:{1}",pairs.key(),pairs.value()));
}
}
程序运行结果
true key:1,value:recordhasbeenenabled true key:10,000,value:success
结论:
项目中使用同一接口管理枚举类,在方法参数中使用接口而不是用具体的枚举对象作为入参,可以一定程度上降低程序的耦合性
补充:java中enum类的两种接口的实现方法
和普通Java类一样,枚举类可以实现一个或多个接口
若每个枚举值在调用实现的接口方法呈现相同的行为方式,则只要统一实现该方法即可。
若需要每个枚举值在调用实现的接口方法呈现出不同的行为方式,则可以让每个枚举值分别来实现该方法
1、enum关键字定义枚举类实现接口的情况
```java
interfaceinfo{
voidshow();
}
enumSeason1implementsinfo{
//用enum关键字后,首先要把类里面定义的对象提到最前面,将一些重复
//的前缀的去掉,每个对象之间要用逗号隔开,最后一个用分号
//后面的就没有什么变化
SPRING("春天","春意暖暖"),
SUMMER("春天","春意暖暖"),
AUTUMN("春天","春意暖暖"),
WINTER("春天","春意暖暖");
privatefinalStringseasonName;
privatefinalStringseasonDeac;
privateSeason1(StringseasonName,StringseasonDeac){
this.seasonDeac=seasonDeac;
this.seasonName=seasonName;
}
publicStringgetSeasonDeac(){
returnseasonDeac;
}
publicStringgetSeasonName(){
returnseasonName;
}
//注意这时候没有重写toString方法,即但是依然可以输出对象
//的内容。即enum类不是继承object类,而是默认继承
//lang包下的enum类
@Override
publicvoidshow(){
System.out.println("这是一个季节");
}
}
enum接口的实现和普通类实现没有什么区别
二、让枚举类的对象分别去实现接口中的抽象方法
```java
```java
/**
*@authorLYH_351147852@QQ.COM
*@create2019-10-0521:39
*/
publicclassSeasonTest1{
publicstaticvoidmain(String[]args){
Season1[]values=Season1.values();
for(inti=0;i
在每一个对象逗号前面加一个大括号,然后里面写上重写的方法
以上为个人经验,希望能给大家一个参考,也希望大家多多支持毛票票。如有错误或未考虑完全的地方,望不吝赐教。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。