我想设置值枚举在我的Java应用程序....但我不能这样做。设置值枚举 - Java
我做错了吗?
public enum RPCPacketDataType {
PT_UNKNOWN(2),
PT_JSON(4),
PT_BINARY(5)
};
它给了我这个错误:构造函数RPCPacket.RPCPacketDataType(int)是未定义的。
我想设置值枚举在我的Java应用程序....但我不能这样做。设置值枚举 - 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
您应该创建一个构造器,它接受int
参数。还要添加一个int
字段,它将保存传递的值。
public enum RPCPacketDataType {
PT_UNKNOWN(2),
PT_JSON(4),
PT_BINARY(5);
private int mValue;
RPCPacketDataType(int value) {
mValue = value;
}
}
您可能还需要添加一个getter以后有机会获得价值构造器。 –
我希望人们可以轻易地将自己的任何方法添加到这个类中。问题是关于增加值,但不检索他们:) – Michael
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说正确,您可以使用它接受蚂蚁int
我还有一个问题。我怎样才能做到这一点: RPCPacketDataType currentType; if(currentType!= PT_JSON)return; –
我想用'switch'作为枚举:'switch(currentType){case PT_JSON:...}' – emboss
其实我只需要检查PT_JSON,这就是为什么我使用if语句。但是感谢您的提前! –