如何在 java 中创建类似枚举的键值
How to make key value like enum in java
我需要制作一个 Enum
包含一些带空格的字符串及其在 int
中的值,例如:
public enum status{
Active(1),
Inactive(2);
}
因为我将它与休眠一起使用,并且还将它转换为 JSON 用于 alpaca js 形式。
喜欢:
[{"text": "Inactive", "value":"2"},{"text": "Active", "value":"1"}]
我一直在制作 enum
。如何制作这种类型的 enum
?
您不能在标识符中间放置 space。
检查此 link Is it possible to assign numeric value to an enum in Java? 以将值分配给 java 中的枚举。
您不能在字符串之间放置 space。您可以使用下划线代替,如下所示:
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;
}
}
您可以在一个 enum
中保存多个值,甚至可以使用 getter 来处理它们。这是我曾经使用过的一个例子(我试着让它适应你的问题):
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
我需要制作一个 Enum
包含一些带空格的字符串及其在 int
中的值,例如:
public enum status{
Active(1),
Inactive(2);
}
因为我将它与休眠一起使用,并且还将它转换为 JSON 用于 alpaca js 形式。
喜欢:
[{"text": "Inactive", "value":"2"},{"text": "Active", "value":"1"}]
我一直在制作 enum
。如何制作这种类型的 enum
?
您不能在标识符中间放置 space。
检查此 link Is it possible to assign numeric value to an enum in Java? 以将值分配给 java 中的枚举。
您不能在字符串之间放置 space。您可以使用下划线代替,如下所示:
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;
}
}
您可以在一个 enum
中保存多个值,甚至可以使用 getter 来处理它们。这是我曾经使用过的一个例子(我试着让它适应你的问题):
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