━目次━
業務システムではコードと名称が紐づいているものってよくあると思います。
マスタがあるわけでもないけど、定数として持っておきたい。。
そんな時に役立つのがEnum(列挙型)です。
この記事では実際にJavaでEnumを使って、DBから取得したコードを名称に変換して表示するソースを紹介したいと思います。
Enumが便利なのはどんなときか
例えば「ホップ」「ステップ」「ジャンプ」と3つのフェーズがあるとします。
DB上では管理のし易さの面からホップは1、ステップは2、ジャンプは3と数値型で持っているとしましょう。
この時DBからとってきた値をそのまま「1」と表示させてもユーザーは何のことか分かりませんよね。
そこで、表示する前に「1」を「ホップ」に変換させてやります。
その紐づきを管理するためにEnumを使おうというわけです。
じゃけぇ						後から「4」として「着地」というフェーズが加わっても修正箇所が明瞭だし、修正も簡単だから便利だよ
サンプルソース
では実際にサンプルソースを載せておきます。
まずは定数ファイルにEnumを定義します。
【SampleConst.java】
| 
					 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38  | 
						public final class SampleConst {     /** ジャンプ情報 */     public static enum JumpInfo {         //ホップ         HOP(1, "ホップ")         //ステップ         , STEP(2, "ステップ");         //ジャンプ         , JUMP(3, "ジャンプ");         private int no;         private String name;         private JumpInfo(int no, String name) {             this.no = no;             this.name = name;         }         public int getNo() {             return no;         }         public String getName() {             return name;         }         //コードNOに一致するジャンプ情報を返却するためのメソッド         public static JumpInfo valueOf(int no) {             JumpInfo[] array = values();             for(JumpInfo num : array) {                 if (no == num.getNo()){                     return num;                 }             }             return null;         }     } }  | 
					
【コードから名称に変換する部分】
| 
					 1 2 3 4 5 6 7 8 9 10  | 
						//DBから取得してきたコード値が格納された変数とする int dbCode; //コードが一致するジャンプ情報の取得 JumpInfo jumpInfo = JumpInfo.valueOf(dbCode); //取得したジャンプ情報から名称を取得 String jumpName = JumpInfo.getName();  | 
					
このように、enumにの中に一致するジャンプ情報を返却するためにメソッドを作成しておき、
メインの処理の中でそのメソッドにDBから取得した値を渡すことで情報を特定します。
あとがそいつの名称を取得すれば完成です。
さいごに
いかがでしたでしょうか?
Enumはコーディングも簡単ですし、便利なのですが、設計段階で意識しておくべきことは、
「マスタにもつべきか定数ファイルにもつべきか」
ということです。
今後絶対に不変であるものはEnumに持たせたら良いですが、業務の中でユーザー自身が修正するものや、変動していく可能性のあるものはメンテナンスのし易さからマスタに持たせるようにしましょう。
それでは!また!!
人気の記事だけ集めたので是非覗いていってください^^
厳選!目的別にオススメ記事を紹介-あなたの欲しい情報がここに-











