J'ai besoin de créer des chaînes contenant des espaces et leurs valeurs dans int comme:
public enum status{
Active(1),
In Active(2);
}
parce que je l’utilise avec hibernate et que je vais aussi le convertir en JSON pour les formulaires en alpaga js.
comme:
[{"text": "In Active", "value":"2"},{"text": "Active", "value":"1"}]
Je suis coincé à faire énumérer comment faire un tel type d'énum.
Vous ne pouvez pas mettre d'espace entre les chaînes. Au lieu de, vous pouvez utiliser le trait de soulignement comme suit:
In_Active
Vous pouvez utiliser cette façon:
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;
}
}
Vous pouvez contenir plusieurs valeurs dans une enum
et même avoir des accesseurs pour les gérer. Voici un exemple que j'ai utilisé une fois (j'essaie de l'adapter à votre problème):
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 InstagramImageSize getText(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();
}
}
Donc dans votre code, vous pouvez simplement utiliser Status.ACTIVE
et cela représentera une instance de votre Enum, qui contient value
et text
comme vous le souhaitez
Vous ne pouvez pas insérer d'espace au milieu d'un identifiant.
Check out this link Est-il possible d'attribuer une valeur numérique à une énumération en Java? pour attribuer la valeur à une énumération en Java.