转 Java 枚举 实现接口_Java 利用枚举实现接口进行统一管理

本文介绍了如何在Java中利用枚举实现接口,通过示例展示了如何创建枚举公共接口,以及状态枚举类和响应枚举类,并提供代码验证。通过这种方式,可以统一管理枚举类,降低程序耦合性。
摘要由CSDN通过智能技术生成

枚举公共接口

public interface IPairs {

/**

* 返回枚举对象

* */

C get();

/**

* 返回枚举项的 key

* */

K key();

/**

* 返回枚举项的 value

* */

V value();

}

状态枚举类

public enum StatusEnum implements IPairs {

DISABLED(0, "record has been disabled"),

ENABLED(1, "record has been enabled"),

DELETES(9, "record has been deleted")

;

private int code;

private String desc;

StatusEnum(int code, String desc) {

this.code = code;

this.desc = desc;

}

public StatusEnum get() {

return this;

}

@Override

public Integer key() {

return this.code;

}

@Override

public String value() {

return this.desc;

}

}

响应枚举类

public enum ResponseEnum implements IPairs {

SUCCESS(10000, "success"),

FAILED(10001, "failed")

;

private int code;

private String desc;

ResponseEnum(int code, String desc) {

this.code = code;

this.desc = desc;

}

public ResponseEnum get() {

return this;

}

@Override

public Integer key() {

return this.code;

}

@Override

public String value() {

return this.desc;

}

}

代码验证

public class AnswerApp {

public static void main(String[] args) {

invoke(StatusEnum.ENABLED);

System.out.println();

response(ResponseEnum.SUCCESS);

}

private static void response(IPairs pairs) {

System.out.println(pairs.get() == ResponseEnum.SUCCESS);

System.out.println(MessageFormat.format("key: {0}, value: {1}", pairs.key(), pairs.value()));

}

private static void invoke(IPairs pairs) {

System.out.println(pairs.get() == StatusEnum.ENABLED);

System.out.println(MessageFormat.format("key: {0}, value: {1}", pairs.key(), pairs.value()));

}

}

程序运行结果

true

key: 1, value: record has been enabled

true

key: 10,000, value: success

结论:

项目中使用同一接口管理枚举类, 在方法参数中使用接口而不是用具体的枚举对象作为入参, 可以一定程度上降低程序的耦合性

补充:java中enum类的两种接口的实现方法

和普通 Java 类一样,枚举类可以实现一个或多个接口

若每个枚举值在调用实现的接口方法呈现相同的行为方式,则只 要统一实现该方法即可。

若需要每个枚举值在调用实现的接口方法呈现出不同的行为方式, 则可以让每个枚举值分别来实现该方法

1、enum关键字定义枚举类实现接口的情况

```java

interface info{

void show();

}

enum Season1 implements info{

//用enum关键字后,首先要把类里面定义的对象提到最前面,将一些重复

// 的前缀的去掉,每个对象之间要用逗号隔开,最后一个用分号

//后面的就没有什么变化

SPRING ("春天","春意暖暖"),

SUMMER ("春天","春意暖暖"),

AUTUMN ("春天","春意暖暖"),

WINTER ("春天","春意暖暖");

private final String seasonName;

private final String seasonDeac;

private Season1(String seasonName,String seasonDeac){

this.seasonDeac = seasonDeac;

this.seasonName = seasonName;

}

public String getSeasonDeac() {

return seasonDeac;

}

public String getSeasonName() {

return seasonName;

}

//注意这时候没有重写toString方法,即但是依然可以输出对象

// 的内容。即enum类不是继承object类,而是默认继承

//lang包下的enum类

@Override

public void show() {

System.out.println("这是一个季节");

}

}

enum接口的实现和普通类实现没有什么区别

二、让 枚举类的对象分别去实现接口中的抽象方法

```java

```java

/**

* @author LYH_351147852@QQ.COM

* @create 2019-10-05 21:39

*/

public class SeasonTest1 {

public static void main(String[] args) {

Season1[] values = Season1.values();

for (int i = 0;i < values.length;i++){

values[i].show();

}

}

}

interface info{

void show();

}

enum Season1 implements info{

//用enum关键字后,首先要把类里面定义的对象提到最前面,将一些重复

// 的前缀的去掉,每个对象之间要用逗号隔开,最后一个用分号

//后面的就没有什么变化

SPRING ("春天","春意暖暖"){

@Override

public void show() {

System.out.println("春天美好");

}

},

SUMMER ("夏天","夏日炎炎"){

@Override

public void show() {

System.out.println("夏天炎热");

}

},

AUTUMN ("秋天","秋高气爽"){

@Override

public void show() {

System.out.println("秋天寒冷");

}

},

WINTER ("冬天","寒风呼啸"){

@Override

public void show() {

System.out.println("寒风呼啸");

}

};

private final String seasonName;

private final String seasonDeac;

private Season1(String seasonName,String seasonDeac){

this.seasonDeac = seasonDeac;

this.seasonName = seasonName;

}

public String getSeasonDeac() {

return seasonDeac;

}

public String getSeasonName() {

return seasonName;

}

//注意这时候没有重写toString方法,即但是依然可以输出对象

// 的内容。即enum类不是继承object类,而是默认继承

//lang包下的enum类

// @Override

// public void show() {

// System.out.println("这是一个季节");

// }

}

在每一个对象逗号前面加一个大括号,然后里面写上重写的方法

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。如有错误或未考虑完全的地方,望不吝赐教。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值