Enum Switch语句Java 6"默认"情况

Ezr*_*3zr 4 java enums switch-statement

private enum CLASS {FMAN, SOPH, JUN, SEN, GRAD, ERROR};

private CLASS stringToClass(String t){

    switch(CLASS.valueOf(t))
    {
    case FMAN: return CLASS.FMAN;
    case SOPH: return CLASS.SOPH;
    case JUN: return CLASS.JUN;
    case SEN: return CLASS.SEN;
    case GRAD: return CLASS.GRAD;
    default: 
        System.out.println("NOT VALID CLASS. ERROR");
        return CLASS.ERROR;
    }
}
Run Code Online (Sandbox Code Playgroud)

所以我在这里有这段代码.在构造时,我有这个方法从给定的字符串t返回相应的值.

我的问题是,让我们说"t"最终成为"CSE".我该如何处理并基本上返回CLASS.ERROR的值.

这是在Java 6中,而不是7.

Ste*_*n C 7

这是一个更好的方式来写这个:

private CLASS stringToClass(String t){
    try {
        return CLASS.valueOf(t);
    } catch (InvalidArgumentException ex) {
        return CLASS.ERROR;
    }
}
Run Code Online (Sandbox Code Playgroud)

switch语句是冗余的...它实际上使你的代码更脆弱'因为你必须记住如果你向它添加新的值更新案例列表enum.


我还应该在你的代码中指出一些风格暴行:

  • 称一个枚举"CLASS"是可怕的误导.
  • 您使用的是错误的标识符.所有类型名称都应使用驼峰大小写,并以大写字母开头.(作为首字母缩写词的名称可以视为例外,但CLASS不是首字母缩略词.)

我知道我知道.这可能令人困惑.我的命名不好.但我已经在我的代码中进行了分类.

是的......好吧,把它换成别的东西.动用你的想象力.但是不要违反风格规则.