日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

java 枚举抽象方法_Java枚举抽象方法实战

發布時間:2025/7/14 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java 枚举抽象方法_Java枚举抽象方法实战 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

枚舉類型是指由一組固定的常量組合成合法值的類型。

背景需求

本次需求中,已經定了幾個固定的常量值,每個常量值都有相同的行為,但是具體的實現細節不同。建議使用枚舉抽象方法,好處:結構清晰,便于擴展。

枚舉常量方法

最常見的星期一到星期日的常量,假設每天都需要打印不同的消息。

定義一個抽象方法,用于描述打印行為。

星期常量Override抽象方法,實現具體的打印細節。

代碼演示如下:

public class EnumAbstract {

//對外提供方法

public void print(int key) {

keyOf(key).print();

}

public void print(WorkDays workDays){

workDays.print();

}

//獲取Key對應的實例

private WorkDays keyOf(int key) {

switch (key) {

case 1:

return WorkDays.MONDAY;

case 2:

return WorkDays.TUESDAY;

case 3:

return WorkDays.WEDNESDAY;

case 4:

return WorkDays.THURSDAY;

case 5:

return WorkDays.FRIDAY;

case 6:

return WorkDays.SUNDAY;

case 7:

return WorkDays.SATURDAY;

default:

return null;

}

}

//最小訪問權限設計原則,根據需要設置訪問權限

private enum WorkDays {

MONDAY(1) {

@Override

protected void print() {

System.out.println(getKey()+" : 消息1");

}

}, TUESDAY(2) {

@Override

protected void print() {

System.out.println(getKey()+" : 消息2");

}

}, WEDNESDAY(3) {

@Override

protected void print() {

System.out.println(getKey()+": 消息3");

}

}, THURSDAY(4) {

@Override

protected void print() {

System.out.println(getKey()+" : 消息4");

}

}, FRIDAY(5) {

@Override

protected void print() {

System.out.println(getKey()+" : 消息5");

}

}, SATURDAY(6) {

@Override

protected void print() {

System.out.println(getKey()+" : 消息6");

}

}, SUNDAY(7) {

@Override

protected void print() {

System.out.println(getKey()+" : 消息7");

}

};

private int key;

//私有化構造方法

private WorkDays(int key) {

this.key = key;

}

public int getKey() {

return key;

}

public void setKey(int key) {

this.key = key;

}

//抽象方法

protected abstract void print();

}

}

代碼中的訪問修飾符可根據需要修改。上述代碼僅用于演示。該代碼對外封裝細節,僅提供了打印方法,使用此方法需要知道枚舉常量對應的key值。如果知道枚舉值,可直接調用打印方法。workDays.print();

實戰

下面模擬實戰中的使用場景,遇到了一個難題,順便記錄一下。

項目中會遇到這樣的問題,頁面上需要展示枚舉變量對應的含義,這時有2中做法:

1. 頁面根據不同枚舉變量解析對應的含義;

2. 枚舉變量在定義的時候,把key 定義為對應的含義。

public enum WorkDaysName {

MONDAY("星期一"), TUESDAY("星期二"), WEDNESDAY("星期三"), THURSDAY("星期四"), FRIDAY("星期五"), SATURDAY("星期六"), SUNDAY("星期日");

private String name;

WorkDaysName(String name) {

this.name = name;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

}

下面模擬枚舉變量在前后端交互過程中的做法。

//模擬保存枚舉到數據庫

public static void testSave() {

String key = EnumAbstract.WorkDaysName.SUNDAY.name();

//保存枚舉實例對應的name到數據庫

System.out.println("保存枚舉實例對應的name到數據庫 " + key);

}

//模擬從數據庫獲取

public static void testSelect() {

//模擬從數據庫獲取

EnumAbstract.WorkDaysName workDays = EnumAbstract.WorkDaysName.valueOf("SUNDAY");

System.out.println("模擬從數據庫獲取對應的枚舉實例 " + workDays);

System.out.println("模擬從數據庫獲取對應的枚舉實例的類型 " + workDays.getClass());

System.out.println("頁面直接展示:" + workDays + " 的name:" + workDays.getName());

}

結果:

保存枚舉實例對應的name到數據庫: SUNDAY

模擬從數據庫獲取對應的枚舉實例: SUNDAY

模擬從數據庫獲取對應的枚舉實例的類型: class org.wuxinshui.boosters.designPatterns.enumAbstract.EnumAbstract$WorkDaysName

頁面直接展示:SUNDAY 的name:星期日

擴展

總結

以上是生活随笔為你收集整理的java 枚举抽象方法_Java枚举抽象方法实战的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。