我想設置值枚舉在我的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語句。但是感謝您的提前! –