モノです。
Java の enum は C/C++ のより拡張性があってもっと便利です。
変数値から要素名を得る「逆引き」などという動作は、enum の一部として定義できます。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public class ReverseLookup { | |
enum PRQ{ | |
KEY | |
,CLIENT_CODE | |
,ITEM_CODE | |
,ORDER_NUMBER | |
,PROVIDER_NUMBER}; | |
public static String getValue(int n) { | |
String res = ""; | |
PRQ valueList[] = PRQ.values(); | |
for (PRQ p : valueList) { | |
if (p.ordinal() == n) { | |
return p.name(); | |
} | |
} | |
return res; | |
} | |
} |
values() を使えば列挙型の設定されたすべての値を得ることができます。
便利な Java の enum 列挙型ですが、得られた配列から値を得てももとの値を得ることができない。ようです。
あるのは ordinal() 関数のみ。これだと順番が出てきます。
設定された変数へ値を代入する、あとはメンバ関数を自作するなどいう方法が巷ではあるようですが、これだと列挙型である意味がない。並べておいて代入しなくていいのが列挙型の利点です。
???な Java の enum 列挙型ですが、そもそも最初の設計でなかった機能です。なにか考えがあるのかも。
値を設定しているのでない、順番があるだけだ、ってことでしょうか。