评估交换机中的枚举

时间:2011-10-09 17:01:29

标签: java enums

enum type {WD, AGGT, ACCT}
public type empType



public void salary(int choice, int hours_Worked)
    {
        switch(choice)
        {
        case ?:  
        case ?: 
        case ?:
        }
    }

我不确定在案例中放什么,因为传递给方法的选择是数字的,我发现的大多数例子都是字符串比较..我总是可以强迫案例为1和2但是。 ..这将首先杀死枚举点......

3 个答案:

答案 0 :(得分:2)

实际上,该方法应该使用type choice而不是int choice作为参数。 (而且,Type确实应该大写并给出更好的名称。)

您是否在询问如何从序数整数值到枚举值?这不是一个好主意,但如果必须,你可以这样转换:

type valueOf(int ordinal) {
  for (type t : type.values()) {
    if (t.ordinal() == ordinal) {
      return t;
    }
  }
  throw new IllegalArgumentException();
}

......但同样,这是修复糟糕的设计。改变那种方法。

答案 1 :(得分:1)

首先,Java中的枚举以下列方式声明:

public enum EmpType {
    WD, AGGT, ACCT
}

按照惯例,枚举名称应为大写。要引用枚举值,只需限定它,例如EmpType.WD。但是在开关内部,它是推断的,所以你要省略它,例如:

EmpType myEmpType = EmpType.WD;
switch (myEmpType) {
    case WD:
          break;
    default:
}

请注意,变量类型声明为EmpType,而不是int。看看Java Tutorial

答案 2 :(得分:0)

该方法应如下所示:

public void salary(Type choice, int hours_Worked)
    {
        switch(choice)
        {
        case WD:  
        case ACCT: 
        case AGGT:
        }
    }

因为如果你有一个枚举,你应该使用它,而不是一些匿名的int 如果你真的必须以这种方式转换序数(这是一个实现细节):

Type type = Type..... // WD, ...
int o = type.ordinal();
// reverse mapping: ordinal -> Type
Type type2 = Type.values()[o];