让枚举类型表示一组字符串的最佳方法是什么?
我试了一下:
enum Strings{
STRING_ONE("ONE"), STRING_TWO("TWO")
}
然后我如何使用它们作为字符串?
让枚举类型表示一组字符串的最佳方法是什么?
我试了一下:
enum Strings{
STRING_ONE("ONE"), STRING_TWO("TWO")
}
然后我如何使用它们作为字符串?
当前回答
根据你所说的“使用它们作为字符串”,你可能不想在这里使用enum。在大多数情况下,精英绅士提出的解决方案将允许你通过他们的tostring -方法使用它们,例如在System.out.println(STRING_ONE)或Strings = "Hello "+STRING_TWO,但当你真的需要字符串(例如STRING_ONE. tolowercase()),你可能更喜欢将它们定义为常量:
public interface Strings{
public static final String STRING_ONE = "ONE";
public static final String STRING_TWO = "TWO";
}
其他回答
你可以将它用于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;
}
}
根据你所说的“使用它们作为字符串”,你可能不想在这里使用enum。在大多数情况下,精英绅士提出的解决方案将允许你通过他们的tostring -方法使用它们,例如在System.out.println(STRING_ONE)或Strings = "Hello "+STRING_TWO,但当你真的需要字符串(例如STRING_ONE. tolowercase()),你可能更喜欢将它们定义为常量:
public interface Strings{
public static final String STRING_ONE = "ONE";
public static final String STRING_TWO = "TWO";
}
如果你不想使用构造函数,并且你想为这个方法取一个特殊的名字,试试这个方法:
public enum MyType {
ONE {
public String getDescription() {
return "this is one";
}
},
TWO {
public String getDescription() {
return "this is two";
}
};
public abstract String getDescription();
}
我怀疑这是最快的解决办法。没有必要使用变量final。
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