将值设置为枚举 - Java

时间:2011-08-25 13:56:14

标签: java android enums

我正在尝试在我的java应用程序中将值设置为枚举....但我不能这样做。

我做错了吗?

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

它给了我这个错误:构造函数RPCPacket.RPCPacketDataType(int)未定义。

3 个答案:

答案 0 :(得分:37)

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

答案 1 :(得分:7)

您应该创建一个接受int参数的构造函数。同时添加一个int字段,该字段将保存传递的值。

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

    private int mValue;

    RPCPacketDataType(int value) {
        mValue = value;
    }
}

答案 2 :(得分:4)

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都说的那样,你可以使用一个接受ant int的构造函数