[英]Is it possible to create enums with a variable which is defined only when using this enum?
我正在嘗試構建一個將用於與其他對象通信的對象。 此通信對象應具有枚舉,這些枚舉包括“ORDER_CREATED”,“ORDER_CANCELLED”和“ORDER_AT_LOCATION”。 我現在要做的是使用String位置為枚舉“ORDER_AT_LOCATION”賦值。 這樣,如果枚舉為“ORDER_CREATED”,則沒有包含“null”的空白字段。 我不完全確定這是否可行。
我嘗試使用一個特定枚舉的構造函數,但沒有任何運氣
public class OrderEvent {
private OrderEventTypes eventType;
}
enum OrderEventTypes{
//I want a constructor with String info only for the enum ORDER_AT_LOCATION
ORDER_AT_LOCATION{
String info;
public void ORDER_IN_TRANSIT(String info) {
this.info = info;
}
public String getInfo() {
return info;
}
}
, ORDER_CANCELLED, ORDER_COMPLETED, ORDER_CREATED;
}
預期的結果應該是這個陳述有效。
if(eventType.equals("ORDER_AT_LOCATION")) {
System.out.println(eventType.getInfo());
}
如果你對此有任何其他好的解決方案,我會非常感激,我能想到的所有解決方案都是完全可行的但不如此好。
您可以使用構造函數創建enum
,該構造函數接受String
值並初始化info
字段:
enum OrderEventTypes{
ORDER_AT_LOCATION("ORDER_AT_LOCATION"),
ORDER_CANCELLED,
ORDER_COMPLETED,
ORDER_CREATED;
private final String info;
OrderEventTypes(){
this("");
}
OrderEventTypes(String info){
this.info = info;
}
public String getInfo(){
return this.info;
}
@Override
public String toString() {
return this.info;
}
}
現在,當您需要進行比較時,可以使用getter獲取info
字段的值:
if("ORDER_AT_LOCATION".equals(eventType.getInfo())){
System.out.println(eventType.getInfo());
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.