Установить значение в Enum - Java - PullRequest
18 голосов
/ 25 августа 2011

Я пытаюсь установить значения для перечисления в моем Java-приложении .... но я не могу этого сделать.

Я делаю это неправильно ???

public enum RPCPacketDataType {
    PT_UNKNOWN(2),
    PT_JSON(4),
    PT_BINARY(5)
};

Это дает мне эту ошибку: конструктор RPCPacket.RPCPacketDataType (int) не определен.

Ответы [ 3 ]

38 голосов
/ 25 августа 2011
public enum RPCPacketDataType
{
    PT_UNKNOWN(2),
    PT_JSON(4),
    PT_BINARY(5);

    RPCPacketDataType (int i)
    {
        this.type = i;
    }

    private int type;

    public int getNumericType()
    {
        return type;
    }
}

Вы также можете определять методы в вашем перечислении, как в «нормальном» классе.

 System.out.println(RPCPacketDataType.PT_JSON.getNumericType() // => 4
7 голосов
/ 25 августа 2011

Вы должны создать Contructor, который принимает параметр int.Также добавьте поле int, в котором будет храниться переданное значение.

public enum RPCPacketDataType {
    PT_UNKNOWN(2),
    PT_JSON(4),
    PT_BINARY(5);

    private int mValue;

    RPCPacketDataType(int value) {
        mValue = value;
    }
}
4 голосов
/ 22 мая 2013
public enum RPCPacketDataType { 

  PT_UNKNOWN(2), 
  PT_JSON(4),
  PT_BINARY(5); 

  private int type;

  RPCPacketDataType(int type) { 
    this.type = type; 
  }

  public int getNumericType() {
    return type;
  }

  public void setNumericType(int type) {
    this.type = type;
  }

  public static void main(String[] args) {
    RPCPacketDataType.PT_UNKNOWN.setNumericType(0);
    System.out.println("Type: "+RPCPacketDataType.PT_UNKNOWN.getNumericType()); 
    // Type: 0
  }

}

Как правильно сказали #emboss и #Michael, вы можете использовать Contructor, который принимает ant int

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...