【发布时间】:2011-08-25 13:56:13
【问题描述】:
我正在尝试在我的 java 应用程序中设置枚举值....但我做不到。
我做错了吗???
public enum RPCPacketDataType {
PT_UNKNOWN(2),
PT_JSON(4),
PT_BINARY(5)
};
它给了我这个错误:构造函数 RPCPacket.RPCPacketDataType(int) 未定义。
【问题讨论】:
我正在尝试在我的 java 应用程序中设置枚举值....但我做不到。
我做错了吗???
public enum RPCPacketDataType {
PT_UNKNOWN(2),
PT_JSON(4),
PT_BINARY(5)
};
它给了我这个错误:构造函数 RPCPacket.RPCPacketDataType(int) 未定义。
【问题讨论】:
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
【讨论】:
switch 枚举:switch (currentType) { case PT_JSON: ... }
您应该创建一个接受int 参数的构造器。还要添加一个 int 字段来保存传递的值。
public enum RPCPacketDataType {
PT_UNKNOWN(2),
PT_JSON(4),
PT_BINARY(5);
private int mValue;
RPCPacketDataType(int value) {
mValue = value;
}
}
【讨论】:
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 的 Contructor
【讨论】: