我应该如何将这些数据存储在Java枚举中?

时间:2012-03-28 20:13:31

标签: java enums

将这些数据存储在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"
}

但这不起作用。我正在考虑存储一个文本值的可能性,该值总结了用户在此网页上看到的选项。

7 个答案:

答案 0 :(得分:10)

查看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;
  }
}

答案 1 :(得分: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;
    }
}

答案 2 :(得分: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());
      }
}

答案 3 :(得分:0)

您不能在成员名称中包含空格,也不能指定枚举值,它们是对象,而不是常量。

答案 4 :(得分: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;)
}

要访问该关联字符串,您还需要提供一个公共访问器方法。

答案 5 :(得分: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;
     }

   }

答案 6 :(得分: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;
  }
}