【发布时间】:2016-02-18 14:47:38
【问题描述】:
我使用的是 enum 而不是 switch,但是有一个问题。在开关中,您可以使用默认情况。但是使用枚举呢?当我输入与定义的枚举不同的输入时,我的程序崩溃了。
例如:
public enum InputChar {
X,Y,Z;
/**
* get an input character
* @return a String description of the input character
*/
@Override
public String toString()
{
String s = "";
if (this.ordinal() == 0)
s = "X";
else if (this.ordinal() == 1)
s = "Y";
else if (this.ordinal() == 2)
s = "Z";
return s;
}
}
我正在使用它:
private void checkInput(String charEntered)
{
textDoc = new textDoc (InputChar.valueOf(charEntered));
}
我进行了研究,但无法使其正常工作。想过在 toString() 中添加 else 语句,但似乎无法在其中添加 deafult...
【问题讨论】:
-
你到底想做什么?
-
不要使用
Enum.ordinal()。引用Javadoc:“大多数程序员不会使用这种方法。它是为复杂的基于枚举的数据结构设计的,例如 EnumSet 和 EnumMap。”。有关为什么不使用它的详细说明,另请参阅 Effective Java,例如脆弱性。另外,Enum.toString()的默认实现已经产生了相同的输出。 -
我想将程序的字符输入限制为几个特殊字符。这里是 X、Y 和 Z。
标签: java enums switch-statement default