¿La mejor manera de crear una enumeración de cadenas?
¿ Cuál es la mejor manera de que un enum
tipo represente un conjunto de cadenas?
Probé esto:
enum Strings{
STRING_ONE("ONE"), STRING_TWO("TWO")
}
¿ Cómo puedo entonces usarlos como Strings
?
No sé qué quieres hacer, pero así es como traduje tu código de ejemplo...
package test;
/**
* @author The Elite Gentleman
*
*/
public enum Strings {
STRING_ONE("ONE"),
STRING_TWO("TWO")
;
private final String text;
/**
* @param text
*/
Strings(final String text) {
this.text = text;
}
/* (non-Javadoc)
* @see java.lang.Enum#toString()
*/
@Override
public String toString() {
return text;
}
}
Alternativamente, puede crear un método getter para text
.
ahora puedes hacerStrings.STRING_ONE.toString();
Valores de cadena personalizados para enumeración
de http://javahowto.blogspot.com/2006/10/custom-string-values-for-enum.html
El valor de cadena predeterminado para la enumeración de Java es su valor nominal o el nombre del elemento. Sin embargo, puede personalizar el valor de la cadena anulando el método toString(). Por ejemplo,
public enum MyType {
ONE {
public String toString() {
return "this is one";
}
},
TWO {
public String toString() {
return "this is two";
}
}
}
Ejecutar el siguiente código de prueba producirá esto:
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
Utilice su name()
método:
public class Main {
public static void main(String[] args) throws Exception {
System.out.println(Strings.ONE.name());
}
}
enum Strings {
ONE, TWO, THREE
}
rendimientos ONE
.
Configure el nombre de la enumeración para que sea el mismo que la cadena que desea o, de manera más general, puede asociar atributos arbitrarios con sus valores de enumeración:
enum Strings {
STRING_ONE("ONE"), STRING_TWO("TWO");
private final String stringValue;
Strings(final String s) { stringValue = s; }
public String toString() { return stringValue; }
// further methods, attributes, etc.
}
Es importante tener las constantes en la parte superior y los métodos/atributos en la parte inferior.
Dependiendo de lo que quiera decir con "úselos como cadenas", es posible que no desee utilizar una enumeración aquí. En la mayoría de los casos, la solución propuesta por The Elite Gentleman te permitirá usarlos a través de sus métodos toString, por ejemplo, en System.out.println(STRING_ONE)
o String s = "Hello "+STRING_TWO
, pero cuando realmente necesites cadenas (por ejemplo STRING_ONE.toLowerCase()
), es posible que prefieras definirlas como constantes:
public interface Strings{
public static final String STRING_ONE = "ONE";
public static final String STRING_TWO = "TWO";
}