Necesito entender el comportamiento de enum en el ejemplo de Java?

El primero es enum class

enum coffeeSize{
    BIG(8), HUGE(10), OVERWHELMING(16);
    private int ounces;
    coffeeSize(int ounces ){
        this.ounces = ounces;
    }
    public int getOunces(){
        return ounces;
    }

}

Esta es la clase CoffeeTest1 y main

 public class CoffeeTest1 {
      coffeeSize size;

      public static void main (String args[]) {
          CoffeeTest1 drink1 = new CoffeeTest1();
          drink1.size = coffeeSize.BIG;

          System.out.println(" " + drink1.size.getOunces());
      }
}

Lo siguiente es salida

8  

Mi pregunta: no entiendo cómo drink1.size.getounces()manejar la salida 8. No he dado un coffeeSize(8)objeto constructor (ej coffeeSize somex = new coffeeSize(BIG).:). Quiero saber esta lógica sutil simple detrás. ¿Alguien puede ayudarme a entender por favor?

Respuesta 1

No entiendo cómo "drink1.size.getounces ()" logran la salida 8.

[...]

Quiero saber esta lógica sutil simple detrás.

Para comprender la lógica detrás de esto, puede pensar en su enumcomo un regular class(que en realidad es cómo se compila), y

BIG(8)

como una instancia de esta clase similar a

new coffeesize(8);

Ahora debería quedar claro por qué drink1.size.getOunces()imprime 8: BIGes solo una instancia de la coffeesizeenumeración, para la cual se establece ouncesen 8 cuando se construye.

Respuesta: 2

Una sugerencia: encuentre, aprenda y siga los estándares de codificación Sun Java. Mejorará la legibilidad de su código.

Produce 8 porque ese es el tamaño, en onzas, para un GRAN tamaño de café, de acuerdo con su enumeración. Ese es el valor que pasaste al GRAN constructor.

drink1es la instancia de la clase, que tiene un miembro de datos visibles de paquete de tipo coffeeSizedenominado size. Cada coffeeSizeinstancia tiene un método getOuncesque devuelve el valor entero que pasó a su constructor.

No hay nada sutil al respecto.

Respuesta: 3

Notará que el getOuncesmétodo está definido en la enumeración. Los valores de enumeración pueden tener propiedades y métodos, en Java.

Está implícito que CoffeeTest1tiene un campo que hace referencia al valor de enumeración.

Entonces, drink1es una instancia de esa clase ...
la sizepropiedad se establece en la BIGinstancia de la enumeración ...
Bigtiene ounces8.

Respuesta: 4

Cuando especifica BIG(8)que lo está creando pasando 8 a su constructor (10 o 16). Cuando lo usas, coffeeSize.BIG.getOunces()estás invocando su método getOunces. BIG, HUGEy OVERWHELMINGson los valores posibles para a coffeeSize, cada uno con su propio estado.

Respuesta: 5

Tenemos una combinación de Java y C ++ en el código de software. Entonces llamamos a la biblioteca C ++ baiscally .dll y .so desde JAVA usando JNI. En solaris esto funciona bien. Podemos cargar .so y llamar a la función C ++ ...

este es mi código surefire-plugin pom.xml <build> <plugins> <plugin> <groupId> org.apache.maven.plugins </groupId> <artifactId> maven -...

Tengo un escritor de elementos como se muestra a continuación: <beans: nombre de propiedad = "lineAggregator"> <beans: bean class = "org.springframework.batch.item.file.transform.FormatterLineAggregator"> <beans: ...

¿Es posible usar Entity Manager o alguna otra API JPA para ejecutar una consulta y obtener resultados, por ejemplo, como una Lista, sin tener que crear una clase de Entidad para la misma? Básicamente, quiero ser ...