Java枚举我可以添加一个返回方法吗?

Java枚举我可以添加一个返回方法吗?,java,android,enums,Java,Android,Enums,在Android中可以这样使用Enum吗 public enum EventAction { SDCARD_MOUNTED { public String toString() { return "External SDCard was mounted"; } public int getCode() { return 25; } } } 从外部代码中,我只能访问EventAction.SDCARD_MOUNTED.t

在Android中可以这样使用Enum吗

public enum EventAction 
{
  SDCARD_MOUNTED
  {
    public String toString() {
      return "External SDCard was mounted";
    }

    public int getCode() {
      return 25;
    }
  }
}  
从外部代码中,我只能访问EventAction.SDCARD_MOUNTED.toString(),但是.getCode()不可见。我看到的示例显示了如何从代码内部使用getCode()。

getCode()
声明为
抽象方法:

public enum EventAction 
{
  SDCARD_MOUNTED
  {
    @Override
    public String toString() {
      return "External SDCard was mounted";
    }
    @Override
    public int getCode() {
      return 25;
    }
  };

  public abstract int getCode();

}
如果每个值都将以相同的方式实现,那么更清楚的做法是:

public enum EventAction {
  SDCARD_MOUNTED(25, "External SDCard was mounted");
  private final int code;
  private final String message;
  private EventAction(int code, String message) {
    this.code = code;
    this.message = message;
  }
  @Override
  public String toString() { return message; }
  public int getCode() { return code; }
}

您需要在枚举级别声明该方法:

public enum EventAction 
{
  SDCARD_MOUNTED
  {
    public String toString() {
      return "External SDCard was mounted";
    }

    public int getCode() {
      return 25;
    }
  };

  public abstract int getCode();

}
大体上

System.out.println(EventAction.SDCARD_MOUNTED.toString());
System.out.println(EventAction.SDCARD_MOUNTED.getCode());
输出:

External SDCard was mounted
25
External SDCard was mounted 111111111
50

这不允许其他枚举值具有不同的属性。@Maxim它实际上有点不同。请注意分号(
)的位置,它使这些方法成为每个
事件操作的成员,而不仅仅是您所问的
SDCARD_MOUNTED
值。它允许所有属性,这里是硬编码的,仅此而已。。。分号终止属性并使其他方法对所有属性通用。它是一个正在运行的代码。我已经执行,然后只粘贴在这里。谢谢dku.rajkumar,现在它看起来和@erickson显示的一模一样。这是一个很好的例子。我以一种常见的方式实现了许多像您所展示的价值观。
External SDCard was mounted
25
External SDCard was mounted 111111111
50