您好,登錄后才能下訂單哦!
這篇文章給大家介紹如何在Java中利用枚舉對接口進行統一管理,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
public interface IPairs<K, V, C extends Enum> { /** * 返回枚舉對象 * */ C get(); /** * 返回枚舉項的 key * */ K key(); /** * 返回枚舉項的 value * */ V value(); }
public enum StatusEnum implements IPairs<Integer, String, StatusEnum> { 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<Integer, String, ResponseEnum> { 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 類一樣,枚舉類可以實現一個或多個接口
若每個枚舉值在調用實現的接口方法呈現相同的行為方式,則只 要統一實現該方法即可。
若需要每個枚舉值在調用實現的接口方法呈現出不同的行為方式, 則可以讓每個枚舉值分別來實現該方法
```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("這是一個季節"); // } }
關于如何在Java中利用枚舉對接口進行統一管理就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。