-2

我正在为应用程序编写代码。但我收到以下错误。

我正在发布屏幕截图。请帮我解决错误。

在此处输入图像描述

错误出现在我使用枚举的部分。

public static enum Mode
  {
    static
    {
      CORRECT = new Mode("CORRECT", 2);
      Mode[] arrayOfMode = new Mode[3];
      arrayOfMode[0] = NO_ASYNC_TASK;
      arrayOfMode[1] = NO_DOWNLOADED_DRAWABLE;
      arrayOfMode[2] = CORRECT;
    }
  }

谢谢大家的回答。

4

5 回答 5

11

将枚举声明为

public static enum MODE
{
    NO_ASYNC_TASK,
    NO_DOWNLOADED_DRAWABLE,
    CORRECT
};

并以下列方式使用枚举

MODE.NO_ASYNC_TASK
于 2012-12-27T07:19:41.907 回答
3

您的定义需要一些增强。首先,没有必要将枚举定义为静态的。此外,您需要将所有枚举放在一个特定的独立类中,而不是与其他类一起,这将使您的解决方案更有条理。此外,“静态”是该语言的保留关键字,因此无需对内部块使用静态。

您可以定义带有或不带有整数值的枚举,如下所示:

public enum Mode
{
    NO_ASYNC_TASK,
    NO_DOWNLOADED_DRAWABLE,
    CORRECT
}

或者

public enum Mode
{
    NO_ASYNC_TASK(1),
    NO_DOWNLOADED_DRAWABLE(2),
    CORRECT(3);

    private final int id;
    Mode(int id) { this.id = id; }
    public int getValue() { return id; }
}
于 2012-12-27T07:25:32.390 回答
2

static从枚举定义中删除修饰符或将您的枚举放入其他类中

于 2012-12-27T07:22:03.257 回答
1

从同一类的枚举声明中删除“public”,因为在一个 java 文件中必须只有一个 public 类和“static”。

于 2012-12-27T07:22:06.177 回答
1

枚举通常在使用常量时使用,充当常量的类型。

而不是说:

public static final int MALE = 1;
public static final int FEMALE = 2;

你可以说

  public enum Gender {
     MALE, FEMALE;
   } 

并将它们称为Gender.MALEGender.FEMALE

没有枚举,方法setGender需要接受一个int(在上面的例子中),我可以传递除 1 或 2 以外的任何东西。然后,那里的代码需要检查传递的 int 是否映射到常量等。Enums提供一个干净的在这种情况下简单的方法。

于 2012-12-27T07:23:08.000 回答