如何使用枚举?

时间:2012-12-27 07:16:52

标签: java android enums

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

我发布了截屏。请帮我解决错误。

enter image description here

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

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;
    }
  }

感谢每一个人的答案。

5 个答案:

答案 0 :(得分:11)

将枚举声明为

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

并以下列方式使用枚举

MODE.NO_ASYNC_TASK

答案 1 :(得分:3)

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

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

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; }
}

答案 2 :(得分:2)

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

答案 3 :(得分:1)

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

答案 4 :(得分: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在这种情况下提供了一种简洁明了的方法。