Je souhaite convertir cet exemple de code C # en un Java:
public enum myEnum {
ONE = "one",
TWO = "two",
};
Parce que je veux changer cette classe constante en enum
public final class TestConstants {
public static String ONE = "one";
public static String TWO= "two";
}
public enum MyEnum {
ONE(1),
TWO(2);
private int value;
private MyEnum(int value) {
this.value = value;
}
public int getValue() {
return value;
}
}
En bref, vous pouvez définir un nombre illimité de paramètres pour l'énumération, à condition de fournir des arguments de constructeur (et de définir les valeurs pour les champs respectifs).
Comme Scott l'a noté - le documentation officielle enum vous donne la réponse. Commencez toujours par la documentation officielle des fonctionnalités et des constructions linguistiques.
Mise à jour: pour les chaînes, la seule différence est que votre argument de constructeur est String
et que vous déclarez des enums avec TEST("test")
.
enums sont classes en Java. Ils ont une valeur ordinale implicite, commençant à 0. Si vous voulez stocker un champ supplémentaire, faites-le comme pour toute autre classe:
public enum MyEnum {
ONE(1),
TWO(2);
private final int value;
private MyEnum(int value) {
this.value = value;
}
public int getValue() {
return this.value;
}
}
Tout simplement comme suit:
/**
* @author The Elite Gentleman
*
*/
public enum MyEnum {
ONE("one"), TWO("two")
;
private final String value;
private MyEnum(final String value) {
this.value = value;
}
public String getValue() {
return value;
}
@Override
public String toString() {
// TODO Auto-generated method stub
return getValue();
}
}
Pour plus d’informations, visitez le site Types d’énumération d’Oracle Java Tutoriels. Notez également que les énums ont private constructeur.
Mettre à jour , depuis que vous avez mis à jour votre message, j'ai changé ma valeur d'un int
à un String
.
Connexes: énumération de chaînes Java .
En Java, vous pouvez également créer une énumération paramétrée. Disons que vous voulez créer une énumération className, dans laquelle vous devez stocker classCode ainsi que className, vous pouvez le faire comme ceci:
public enum ClassEnum {
ONE(1, "One"),
TWO(2, "Two"),
THREE(3, "Three"),
FOUR(4, "Four"),
FIVE(5, "Five")
;
private int code;
private String name;
private ClassEnum(int code, String name) {
this.code = code;
this.name = name;
}
public int getCode() {
return code;
}
public String getName() {
return name;
}
}
public enum MyEnum
{
ONE(1),
TWO(2);
private int value;
private MyEnum(int val){
value = val;
}
public int getValue(){
return value;
}
}
public enum NewEnum {
ONE("test"),
TWO("test");
private String s;
private NewEnum(String s) {
this.s = s);
}
public String getS() {
return this.s;
}
}