Java enum я могу добавить метод возврата? - PullRequest
4 голосов
/ 13 декабря 2011

Можно ли использовать Enum в Android таким образом?

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

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

Из внешнего кода у меня есть доступ только к EventAction.SDCARD_MOUNTED.toString (), но .getCode () не виден.Примеры, которые я видел, показывают, как getCode () используется внутри кода.

Ответы [ 3 ]

9 голосов
/ 13 декабря 2011

Объявите getCode() как abstract метод:

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; }
}
5 голосов
/ 13 декабря 2011

Вам необходимо объявить метод на уровне enum:

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

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

  public abstract int getCode();

}
3 голосов
/ 13 декабря 2011
public enum EventAction 
{
  SDCARD_MOUNTED("External SDCard was mounted",25),
  SDCARD_MOUNTED_1("External SDCard was mounted 111111111",50);

  private String details;
  private int code;

  private EventAction(String details,int code){
      this.code = code;
      this.details = details;
  }

    public String toString() {
      return this.details;
    }

    public int getCode() {
      return this.code;
    }
}

в основном

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...