422 Stimmen

Wie erstellt man am besten eine Aufzählung von 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 ?

704voto

Buhake Sindi Punkte 85274

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();

120voto

vaichidrewar Punkte 8761

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

77voto

Bart Kiers Punkte 160101

Verwenden Sie seine name() Methode:

public class Main {
    public static void main(String[] args) throws Exception {
        System.out.println(Strings.ONE.name());
    }
}

enum Strings {
    ONE, TWO, THREE
}

ergibt ONE .

22voto

Adrian Smith Punkte 16549

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.

19voto

hd42 Punkte 1719

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.com

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.

Powered by:

X