clase de enumeración en java

Hola, tengo un código para entender, así que aquí está el código enumerado:

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

    }

no puedo encontrar el objetivo de esta enumeración

Gracias de antemano

preguntado el 03 de mayo de 12 a las 19:05

Qué quieres decir "no puedo encontrar el objetivo de esta enumeración"? -

Las enumeraciones se usan básicamente cuando hay un conjunto de valores fijos y bien definidos que se conocen en tiempo de compilación. Puedes usar EnumSet también, si lo necesita. -

2 Respuestas

El "objetivo" de la enumeración probablemente no esté en el declaración de la enumeración, es probable que esté en el personal de la enumeración.

De la información limitada que hay aquí, es probable que se use para evitar el código "de tipo de cadena" que habría usado la cadena "LIBRO" y "REVISTA" por todas partes.

Por ejemplo:

// 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
    }
}

la nueva versión del método no le permite pasar tipos de libros inexistentes, o cadenas arbitrariamente en mayúsculas que pueden o no haber funcionado en el "código antiguo"

contestado el 03 de mayo de 12 a las 19:05

No veo ningún beneficio del extra. bookText campo.

Seguir una enumeración simple hará lo mismo,

public enum BookEnum {
    BOOK,
    MAGAZINE;
}

Puedes obtener la cadena como esta,

BookEnum book = BookEnum.MAGAZINE;
String bookText = book.name();

contestado el 03 de mayo de 12 a las 20:05

¿No le parece un error desastroso tener un setter en una enumeración? Me refiero al código de OP. - Marko Topolnik

+1 El campo bookText habría sido útil si hubieran usado nombres personalizados y no el nombre real de la enumeración. - Andres f.

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.