-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”。

例如:

// 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 回答