创建字符串枚举的最佳方法?

enum类型表示一组字符串的最佳方法是什么?

我试了一下:

enum Strings{
STRING_ONE("ONE"), STRING_TWO("TWO")
}

然后如何将它们用作Strings?

579319 次浏览

使用它的name()方法:

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


enum Strings {
ONE, TWO, THREE
}

收益率ONE

我不知道你想做什么,但这就是我如何翻译你的示例代码....

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;
}
}

或者,你也可以为text创建一个getter方法。

你现在可以执行Strings.STRING_ONE.toString();

要么将枚举名称设置为与你想要的字符串相同,或者更一般地,你可以将任意属性与你的枚举值关联:

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

常量在顶部,方法/属性在底部,这很重要。

根据你所说的“使用它们作为字符串”,你可能不想在这里使用enum。在大多数情况下,the Elite Gentleman提出的解决方案将允许你通过它们的tostring -方法来使用它们,例如在System.out.println(STRING_ONE)String s = "Hello "+STRING_TWO中,但当你真的需要字符串时(例如STRING_ONE.toLowerCase()),你可能更喜欢将它们定义为常量:

public interface Strings{
public static final String STRING_ONE = "ONE";
public static final String STRING_TWO = "TWO";
}

Enum的自定义字符串值

http://javahowto.blogspot.com/2006/10/custom-string-values-for-enum.html

java enum的默认字符串值是它的表面值或元素名称。但是,您可以通过重写toString()方法自定义字符串值。例如,

public enum MyType {
ONE {
public String toString() {
return "this is one";
}
},


TWO {
public String toString() {
return "this is two";
}
}
}

运行下面的测试代码将产生如下结果:

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

如果你想要使用构造函数,并且你想要有一个特别的名字的方法,尝试这样做:

public enum MyType {
ONE {
public String getDescription() {
return "this is one";
}
},
TWO {
public String getDescription() {
return "this is two";
}
};


public abstract String getDescription();
}

我怀疑这是最快的解决方案。没有必要使用变量最终

你可以将它用于string Enum

public enum EnumTest {
NAME_ONE("Name 1"),
NAME_TWO("Name 2");


private final String name;


/**
* @param name
*/
private EnumTest(final String name) {
this.name = name;
}


public String getName() {
return name;
}
}

并从main方法调用

public class Test {
public static void main (String args[]){
System.out.println(EnumTest.NAME_ONE.getName());
System.out.println(EnumTest.NAME_TWO.getName());
}
}

获取和设置默认值。

public enum Status {


STATUS_A("Status A"),  STATUS_B("Status B"),


private String status;


Status(String status) {
this.status = status;
}


public String getStatus() {
return status;
}
}