Was ist der beste Weg, um eine enum
Typ eine Reihe von Zeichenketten darstellen?
Ich habe dies versucht:
enum Strings{
STRING_ONE("ONE"), STRING_TWO("TWO")
}
Wie kann ich sie dann verwenden als Strings
?
Was ist der beste Weg, um eine enum
Typ eine Reihe von Zeichenketten darstellen?
Ich habe dies versucht:
enum Strings{
STRING_ONE("ONE"), STRING_TWO("TWO")
}
Wie kann ich sie dann verwenden als Strings
?
Ich weiß nicht, was Sie vorhaben, aber ich habe Ihren Beispielcode folgendermaßen übersetzt: ....
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;
}
}
Alternativ können Sie auch eine Getter-Methode für text
.
Sie können jetzt Folgendes tun Strings.STRING_ONE.toString();
Benutzerdefinierte String-Werte für Enum
から http://javahowto.blogspot.com/2006/10/custom-string-values-for-enum.html
Der Standard-Stringwert für Java Enum ist der Nennwert oder der Name des Elements. Sie können den String-Wert jedoch anpassen, indem Sie die Methode toString() überschreiben. Zum Beispiel,
public enum MyType {
ONE {
public String toString() {
return "this is one";
}
},
TWO {
public String toString() {
return "this is two";
}
}
}
Die Ausführung des folgenden Testcodes führt zu diesem Ergebnis:
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
Sie können entweder den Enum-Namen mit der gewünschten Zeichenkette gleichsetzen oder, allgemeiner ausgedrückt, beliebige Attribute mit Ihren Enum-Werten verknüpfen:
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 ist wichtig, dass die Konstanten ganz oben und die Methoden/Attribute ganz unten stehen.
Je nachdem, was Sie mit "sie als Strings verwenden" meinen, möchten Sie hier vielleicht kein Enum verwenden. In den meisten Fällen wird die von The Elite Gentleman vorgeschlagene Lösung es Ihnen erlauben, sie durch ihre toString-Methoden zu verwenden, z. B. in System.out.println(STRING_ONE)
o String s = "Hello "+STRING_TWO
aber wenn Sie wirklich Strings brauchen (z. B. STRING_ONE.toLowerCase()
), können Sie es vorziehen, sie als Konstanten zu definieren:
public interface Strings{
public static final String STRING_ONE = "ONE";
public static final String STRING_TWO = "TWO";
}
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.