2012-03-28 55 views
3

將這些數據存儲在Java枚舉中的最佳方式是什麼?我應該如何將這些數據存儲在Java枚舉中?

<select> 
    <option></option> 
    <option>Recommend eDelivery</option> 
    <option>Require eDelivery</option> 
    <option>Require eDelivery unless justification provided</option> 
</select> 

我是新來的Java,並試圖像

public enum Paperless { 
     "None" = null, 
     "Recommend eDelivery" = "Recommend eDelivery", 
     "Require eDelivery" = "Require eDelivery", 
     "Require eDelivery unless justification provided" = "Require eDelivery w/out justification" 
} 

的事情,但這個不起作用。我正在考慮存儲文本值的可能性,該文本值總結了用戶在此網頁上看到的選項。

回答

8

看看the enum tutorial,更具體地說是Planet的例子。你也可以做同樣的事情,例如

public enum Paperless{ 
    NONE(null), 
    RECOMMENDED_DELIVERY("Recommended delivery"), 
    ...//put here the other values 
    REQUIRED_DELIVERY("Required delivery"); 
    private String name; 
    Paperless(String name){ 
    this.name = name; 
    } 
    public String getName(){ 
    return this.name; 
    } 
} 
+2

只是一個小點,很容易絆倒的Java初學者:需要有一個分號從體內(即之前'私人字符串分隔枚舉名名字;'在這個例子中)。 – 2012-03-28 20:22:12

+0

@TedHopp完全正確。由於我...的;被遺漏了。將更新該片段。感謝您的注意 – Robin 2012-03-28 20:23:32

+0

如果我將該枚舉作爲另一個類的一部分,請說出一個模型。我如何從當前課程外部訪問無紙化對象? – Webnet 2012-03-29 12:19:25

0

成員的名稱中不能有空格,並且不能分配枚舉值,它們是對象而不是常量。

0

枚舉的名稱必須是一個標識符(例如,一個字,而不是字符串)

public enum Paperless { 
    None, 
    RecommendEDelivery, 
    ... 
} 

你可以,如果你想字符串值與他們交往(儘管你可以得到默認過,等於通過將String成員關聯到枚舉類型並提供一個自定義構造函數,來標識名稱,使用name()方法)。

public enum Paperless { 
    None("None"), 
    RecommendEDelivery("Recommend eDelivery"), 
    ...; 

    private String myValue; 

    private Paperless(String name) {myValue=name;) 
} 

要訪問該關聯字符串,還需要提供一個公共存取方法。

1

像這樣的東西能爲你的情況下工作:

public enum PaperLess { 
    NONE("none"), 
    RECOMMEND("Recommend eDelivery"), 
    REQUIRE("Require eDelivery"), 
    REQUIRE_JUSTIFIED("Require eDelivery unless justification provided"); 

    private String value; 

    private PaperLess(String value) { 
     this.value = value; 
    } 

    public String getValue() { 
     return value; 
    } 
} 
0
public enum Paperless { 
     NONE("None"), 
     RECOMMEND("Recommend eDelivery"), 
     REQUIRE("Require eDelivery"), 
     REQUIRE_UNLESS("Require eDelivery unless justification provided"),; 

    private String value; 
    private Paperless(String value){ 
     this.value=value; 
    } 

    public String getValue(){ 
     return this.value; 
    } 

    } 
0

的Java枚舉不以這種方式構成。退房

Java Tutorials: Enum Types

Java - Convert String to enum: #2

你的可能是這個樣子:

public enum Paperless { 
    NONE(""), 
    RECOMMEND("Recommend eDelivery"), 
    REQUIRE("Require eDelivery"), 
    REQUIRE_UNLESS("Require eDelivery unless justification provided"); 

    private String text; 

    Paperless(String text) { 
    this.text = text; 
    } 

    public String getText() { 
    return this.text; 
    } 
} 
1

不能分配字符串您嘗試的方式來枚舉在Java中值。

做的方式,它是:

public enum Paperless { 
     None(null), 
     RecommendedDelivery("Recommended Delivery"), 
     RequireEDelivery("Require eDelivery"), 
     RequireEDeliveryUnlessJustification("Require eDelivery unless justification provided"); 

     private final String value; 

     Paperless(String value) { 
     this.value = value; 
     } 

     private String enumValue() { return value; } 

     public static void main(String[] args) { 
     for (Paperless p : Paperless.values()) 
      System.out.println("Enum:" + p + "; Value:" + p.enumValue()); 
     } 
} 
相關問題