簡體   English   中英

是否可以使用僅在使用此枚舉時定義的變量創建枚舉?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM