-1

こんにちは、理解するコードを取得したので、列挙型コードを次に示します。

   package com.unice.miage.igift.enumeration;

  /**
   *
   * @author Root
   */
  public enum BookEnum {
      BOOK("BOOK"),
      MAGAZINE("MAGAZINE");

        private String bookText;

         BookEnum(String bookText){
        this.bookText = bookText;
          }

          public String getBookText() {
    return bookText;
           }

     public void setBookText(String bookText) {
       this.bookText = bookText;
       }

    }

この列挙型の目的が見つかりません

前もって感謝します

4

2 に答える 2

4

列挙型の「目的」は、おそらく列挙型の宣言ではなく、おそらく列挙型の使用法にあります。

ここにある限られた情報から、文字列「BOOK」と「MAGAZINE」をいたるところで使用する「stringly-typed」コードを回避するために使用される可能性があります。

例えば:

// old code
void doSomething( String bookType )
{
    if (bookType.equals("BOOK")
    {
        // do something with book
    }
    else if (bookType.equals("MAGAZINE")
    {
        // do something with magazine
    }
    // OOPS, this code is broken if someone adds a new type of book, or uses the string "Book" or "book"
}

// new code
void doSomething( BookEnum bookType )
{
    switch (bookType)
    {
         // cases for each enum value
    }
}

メソッドの新しいバージョンでは、存在しない本の種類、または「古いコード」で機能したかどうかに関係なく大文字と小文字が区別された任意の文字列を渡すことはできません。

于 2012-05-03T18:58:43.750 に答える
3

bookText追加フィールドの利点は見当たりません。

次の単純な列挙型は同じことを行います。

public enum BookEnum {
    BOOK,
    MAGAZINE;
}

このような文字列を取得できます。

BookEnum book = BookEnum.MAGAZINE;
String bookText = book.name();
于 2012-05-03T19:05:37.030 に答える