Quelle est la meilleure façon d'avoir un type enum représente un ensemble de chaînes>
J'ai essayé ceci:
enum Strings{
STRING_ONE("ONE"), STRING_TWO("TWO")
}
Comment peut-on les utiliser comme des chaînes?
Quelle est la meilleure façon d'avoir un type enum représente un ensemble de chaînes>
J'ai essayé ceci:
enum Strings{
STRING_ONE("ONE"), STRING_TWO("TWO")
}
Comment peut-on les utiliser comme des chaînes?
Je ne sais pas ce que vous voulez faire, mais voici comment j'ai traduit votre exemple de code ....
/**
*
*/
package test;
/**
* @author The Elite Gentleman
*
*/
public enum Strings {
STRING_ONE("ONE"),
STRING_TWO("TWO")
;
private final String text;
/**
* @param text
*/
private Strings(final String text) {
this.text = text;
}
/* (non-Javadoc)
* @see java.lang.Enum#toString()
*/
@Override
public String toString() {
return text;
}
}
Vous pouvez également créer une méthode getter pour le texte.
Vous pouvez maintenant faire Strings.STRING_ONE.toString();
La coutume de la Chaîne de Valeurs de l'Enum
à partir de http://javahowto.blogspot.com/2006/10/custom-string-values-for-enum.html
La valeur par défaut de la chaîne de valeur pour java enum est sa valeur nominale, ou le nom de l'élément. Cependant, vous pouvez personnaliser la valeur de la chaîne en substituant la méthode toString (). Par exemple,
public enum MyType {
ONE {
public String toString() {
return "this is one";
}
},
TWO {
public String toString() {
return "this is two";
}
}
}
L'exécution de la suite de test de code de produire ce:
public class EnumTest {
public static void main(String[] args) {
System.out.println(MyType.ONE);
System.out.println(MyType.TWO);
}
}
this is one
this is two
Définissez le nom d'enum comme étant la même que la chaîne souhaitée ou, plus généralement, vous pouvez associer des attributs arbitraires à vos valeurs d'énumération:
enum Strings {
STRING_ONE("ONE"), STRING_TWO("TWO");
private final String stringValue;
private Strings(final String s) { stringValue = s; }
public String toString() { return stringValue; }
// further methods, attributes, etc.
}
Il est important d'avoir les constantes en haut et les méthodes / attributs en bas.
En fonction de ce que vous entendez par "utilisez-les comme chaînes de caractères", vous ne voudrez peut-être pas utiliser une énumération ici. Dans la plupart des cas, la solution proposée par The Gentleman Elite vous permettra de les utiliser par leurs toString-méthodes, par exemple en System.out.println(STRING_ONE)
ou String s = "Hello "+STRING_TWO
, mais quand vous avez vraiment besoin des chaînes (par exemple STRING_ONE.toLowerCase()
), vous pourriez préférer les définir comme des constantes:
public interface Strings{
public static final String STRING_ONE = "ONE";
public static final String STRING_TWO = "TWO";
}
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.