我正在尝试在我的java应用程序中将值设置为枚举....但我不能这样做。
我做错了吗?
public enum RPCPacketDataType {
PT_UNKNOWN(2),
PT_JSON(4),
PT_BINARY(5)
};
它给了我这个错误:构造函数RPCPacket.RPCPacketDataType(int)未定义。
答案 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
的构造函数