Как я должен хранить эти данные в перечислении Java? - PullRequest
5 голосов
/ 29 марта 2012

Какой лучший способ сохранить эти данные в перечислении 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 ]

10 голосов
/ 29 марта 2012

Взгляните на учебник enum , точнее на пример 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 голос
/ 29 марта 2012

Вы не можете назначать строки для перечисления значений в 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());
      }
}
1 голос
/ 29 марта 2012

Примерно так может работать в вашем случае:

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 голосов
/ 29 марта 2012

Java перечисления не построены таким образом. Проверить

Учебные руководства по Java: типы перечислений

Java - Преобразовать строку в перечисление: # 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;
  }
}
0 голосов
/ 29 марта 2012
    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 голосов
/ 29 марта 2012

Имя перечисления должно быть идентификатором (например, одно слово, а не строка)

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

Вы можете связать строковые значения с ними, если хотите (хотя вы также можете получить значение по умолчанию, равное имени идентификатора, используя метод name()), связав член String с типом enum и предоставив собственный конструктор.

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

  private String myValue;

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

Чтобы получить доступ к этой связанной строке, вам также необходимо предоставить метод открытого доступа.

0 голосов
/ 29 марта 2012

В именах элементов не должно быть пробелов, и вы не можете присваивать значения перечисления, это объекты, а не константы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...