让枚举类型表示一组字符串的最佳方法是什么?
我试了一下:
enum Strings{
STRING_ONE("ONE"), STRING_TWO("TWO")
}
然后我如何使用它们作为字符串?
让枚举类型表示一组字符串的最佳方法是什么?
我试了一下:
enum Strings{
STRING_ONE("ONE"), 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 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.
}
常量在顶部,方法/属性在底部,这很重要。
我不知道你想做什么,但这就是我如何翻译你的示例代码....
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;
}
}
或者,也可以为文本创建getter方法。
你现在可以执行Strings.STRING_ONE.toString();
根据你所说的“使用它们作为字符串”,你可能不想在这里使用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";
}
使用它的name()方法:
public class Main {
public static void main(String[] args) throws Exception {
System.out.println(Strings.ONE.name());
}
}
enum Strings {
ONE, TWO, THREE
}
收益率。
如果你不想使用构造函数,并且你想为这个方法取一个特殊的名字,试试这个方法:
public enum MyType {
ONE {
public String getDescription() {
return "this is one";
}
},
TWO {
public String getDescription() {
return "this is two";
}
};
public abstract String getDescription();
}
我怀疑这是最快的解决办法。没有必要使用变量final。