Java如何通過"枚舉的枚舉"表示二級(jí)分類的業(yè)務(wù)場(chǎng)景
問題
一般在開發(fā)中,會(huì)使用枚舉類窮舉特定的業(yè)務(wù)字段值。
比如用枚舉類來表示業(yè)務(wù)中的類型,不同的類型對(duì)應(yīng)的不同的業(yè)務(wù)邏輯。
但是如果一個(gè)類型下會(huì)有不同多個(gè)的子類型,這時(shí)候一個(gè)枚舉類就不能夠完全表示這個(gè)業(yè)務(wù)邏輯了。
如何解決
在 Java編程思想 這本書的枚舉章節(jié)中,有一段 枚舉的枚舉 代碼示例,就能夠很好的表示上面問題的業(yè)務(wù)場(chǎng)景。
代碼
業(yè)務(wù)場(chǎng)景
4 張業(yè)務(wù)數(shù)據(jù)表 A B C D,按資源類型來分類,其中 A B 表屬于農(nóng)用地資源,C D 表屬于森林資源。
一級(jí)資源類型枚舉類
public enum Resource { FARM(0, "農(nóng)用地", Table.Farm.class), FOREST(1, "森林", Table.Forest.class); static { typeMap = Stream.of(values()). collect(Collectors.toMap(e -> e.getValue(), e -> e)); } private static final Map<Integer, Resource> typeMap; private final int value; private final String desc; private final Table[] tables; Resource(int value, String desc, Class<? extends Table> kind) { this.value = value; this.desc = desc; this.tables = kind.getEnumConstants(); } public int getValue() { return value; } public String getDesc() { return desc; } public Table[] getTables() { return tables; } public static Resource getEnum(int value) { return typeMap.get(value); } }
二級(jí)資源類型枚舉類
public interface Table { enum Farm implements Table { TABLE_A("TABLE_A"), TABLE_B("TABLE_B"); private final String tableName; Farm(String tableName) { this.tableName = tableName; } public String getTableName() { return tableName; } } enum Forest implements Table { TABLE_C("TABLE_C"), TABLE_D("TABLE_D"); private final String tableName; Forest(String tableName) { this.tableName = tableName; } public String getTableName() { return tableName; } } String getTableName(); }
測(cè)試
public class Test { public static void main(String[] args) { for (Table table : Resource.getEnum(0).getTables()) { System.out.println(table.getTableName()); } for (Table table : Resource.getEnum(1).getTables()) { System.out.println(table.getTableName()); } } }
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
一篇文章帶你入門java算術(shù)運(yùn)算符(加減乘除余,字符連接)
這篇文章主要介紹了Java基本數(shù)據(jù)類型和運(yùn)算符,結(jié)合實(shí)例形式詳細(xì)分析了java基本數(shù)據(jù)類型、數(shù)據(jù)類型轉(zhuǎn)換、算術(shù)運(yùn)算符、邏輯運(yùn)算符等相關(guān)原理與操作技巧,需要的朋友可以參考下2021-08-08mybatis連接MySQL8出現(xiàn)的問題解決方法
這篇文章主要介紹了mybatis連接MySQL8出現(xiàn)的問題解決方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-10-10Java使用選擇排序法對(duì)數(shù)組排序?qū)崿F(xiàn)代碼
這篇文章主要介紹了Java使用選擇排序法對(duì)數(shù)組排序?qū)崿F(xiàn)代碼,需要的朋友可以參考下2014-02-02jvm crash的崩潰日志詳細(xì)分析及注意點(diǎn)
本篇文章主要介紹了jvm crash的崩潰日志詳細(xì)分析及注意點(diǎn)。具有很好的參考價(jià)值,下面跟著小編一起來看下吧2017-04-04Javaweb項(xiàng)目啟動(dòng)Tomcat常見的報(bào)錯(cuò)解決方案
Java Web項(xiàng)目啟動(dòng)Tomcat時(shí)可能會(huì)遇到各種錯(cuò)誤,本文就來介紹一下Javaweb項(xiàng)目啟動(dòng)Tomcat常見的報(bào)錯(cuò)解決方案,具有一定的參考價(jià)值,感興趣的可以了解一下2024-02-02JDBC使用游標(biāo)實(shí)現(xiàn)分頁(yè)查詢的方法
這篇文章主要介紹了JDBC使用游標(biāo)實(shí)現(xiàn)分頁(yè)查詢的方法,實(shí)例分析了jdbc查詢過程中游標(biāo)的使用及查詢分頁(yè)相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2016-08-08