スペースを含むいくつかの文字列を含むEnum
と、int
の値を次のように作成する必要があります。
public enum status{
Active(1),
Inactive(2);
}
私はそれをhibernateで使用しており、アルパカjsフォーム用にJSONに変換するためです。
お気に入り:
[{"text": "Inactive", "value":"2"},{"text": "Active", "value":"1"}]
enum
の作成に行き詰まっています。そのようなタイプのenum
を作る方法は?
文字列の間にスペースを入れることはできません。代わりに、次のようにアンダースコアを使用できます。
In_Active
次のように使用できます。
enum Status {
ACTIVE("Active", 1), IN_ACTIVE("In Active", 2);
private final String key;
private final Integer value;
Status(String key, Integer value) {
this.key = key;
this.value = value;
}
public String getKey() {
return key;
}
public Integer getValue() {
return value;
}
}
1つのenum
に複数の値を保持でき、それらを処理するゲッターを使用することもできます。これは私が一度使用した例です(私はそれをあなたの問題に適応させようとします):
public enum Status{
ACTIVE(1, "Active"),
INACTIVE(2, "In Active");
private final Integer value;
private final String text;
/**
* A mapping between the integer code and its corresponding text to facilitate lookup by code.
*/
private static Map<Integer, Status> valueToTextMapping;
private Status(Integer value, String text){
this.value = value;
this.text = text;
}
public static Status getStatus(Integer i){
if(valueToTextMapping == null){
initMapping();
}
return valueToTextMapping.get(i);
}
private static void initMapping(){
valueToTextMapping = new HashMap<>();
for(Status s : values()){
valueToTextMapping.put(s.value, s);
}
}
public Integer getValue(){
return value;
}
public String getText(){
return text;
}
@Override
public String toString(){
final StringBuilder sb = new StringBuilder();
sb.append("Status");
sb.append("{value=").append(value);
sb.append(", text='").append(text).append('\'')
sb.append('}');
return sb.toString();
}
}
したがって、コードではStatus.ACTIVE
そしてそれはあなたのEnumのインスタンスを表し、それはvalue
とtext
をあなたが望む方法で保持します
識別子の途中にスペースを入れることはできません。
このリンクをチェックしてください Javaのenumに数値を割り当てることは可能ですか? Javaのenumに値を割り当てるために。