Java 在交换机中计算枚举

Java 在交换机中计算枚举,java,enums,Java,Enums,我不确定在这种情况下应该放什么,因为传递到方法中的选择是数值的,我发现的大多数示例都是字符串比较。。我总是可以强迫案件是一个和两个,但是。。。这将扼杀将枚举放在首位的意义。实际上,该方法应该采用类型选择,而不是int选择,作为参数。(而且,Type确实应该大写,并给它起个更好的名字。) 您是在问如何从序数整数值到枚举值?这不是一个好主意,但如果必须,您可以通过以下方式转换: enum type {WD, AGGT, ACCT} public type empType public void

我不确定在这种情况下应该放什么,因为传递到方法中的选择是数值的,我发现的大多数示例都是字符串比较。。我总是可以强迫案件是一个和两个,但是。。。这将扼杀将枚举放在首位的意义。

实际上,该方法应该采用
类型选择
,而不是
int选择
,作为参数。(而且,
Type
确实应该大写,并给它起个更好的名字。)

您是在问如何从序数整数值到枚举值?这不是一个好主意,但如果必须,您可以通过以下方式转换:

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



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

。。。但同样,这是在修复糟糕的设计。更改该方法。

实际上,该方法应该采用
类型选择
,而不是
int选择
,作为参数。(而且,
Type
确实应该大写,并给它起个更好的名字。)

您是在问如何从序数整数值到枚举值?这不是一个好主意,但如果必须,您可以通过以下方式转换:

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



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

。。。但同样,这是在修复糟糕的设计。更改该方法。

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

type valueOf(int ordinal) {
  for (type t : type.values()) {
    if (t.ordinal() == ordinal) {
      return t;
    }
  }
  throw new IllegalArgumentException();
}
按照约定,枚举名称应为大写。要引用枚举值,只需对其进行限定,例如
EmpType.WD
。但是,在开关内部,它是推断的,因此必须忽略它,例如:

public enum EmpType {
    WD, AGGT, ACCT
}

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

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

type valueOf(int ordinal) {
  for (type t : type.values()) {
    if (t.ordinal() == ordinal) {
      return t;
    }
  }
  throw new IllegalArgumentException();
}
按照约定,枚举名称应为大写。要引用枚举值,只需对其进行限定,例如
EmpType.WD
。但是,在开关内部,它是推断的,因此必须忽略它,例如:

public enum EmpType {
    WD, AGGT, ACCT
}

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

该方法应如下所示:

EmpType myEmpType = EmpType.WD;
switch (myEmpType) {
    case WD:
          break;
    default:
}
因为如果你有一个枚举,你应该使用它,而不是匿名的
int
如果确实需要,可以通过以下方式转换序号(这是一个实现细节):

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



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

方法应如下所示:

EmpType myEmpType = EmpType.WD;
switch (myEmpType) {
    case WD:
          break;
    default:
}
因为如果你有一个枚举,你应该使用它,而不是匿名的
int
如果确实需要,可以通过以下方式转换序号(这是一个实现细节):

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



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

您定义了一个enum
类型
。但是您的示例不清楚您想用它做什么。
类型
选择
有什么关系?您定义了一个枚举
类型
。但是您的示例不清楚您想用它做什么。“<代码>类型< /代码>和<代码>选择< /代码>相关?嗯,我想我想这是一种坏的猜想,我会改变方法。谢谢。你可以考虑用枚举免费获得的Type。值()方法。现在可以在一行中实现此方法:return type.values()[ordinal];如果序是无效的,这将抛出运行时异常(索引xObjFIDENT)。我想,我想这是一种坏的猜想。我会改变方法。谢谢。您可以考虑用枚举免费获得的Type。值()方法。现在可以在一行中实现此方法:return type.values()[ordinal];如果序号无效,这将引发运行时异常(IndexOutOfBounds)。请看教程,我已在帖子中添加了链接。请看教程,我已在帖子中添加了链接。