Red de conocimientos sobre prescripción popular - Remedios caseros - ¿Cómo definir el tipo de enumeración en Java?

¿Cómo definir el tipo de enumeración en Java?

Como nueva palabra clave introducida por Sun, Enum parece una clase especial. También puede tener sus propias variables, definir sus propios métodos e implementar una o más interfaces. Cuando declaramos un tipo de enumeración, debemos tener en cuenta que el tipo de enumeración tiene las siguientes características.

1. No puede tener un constructor público, lo que garantiza que el código del cliente no pueda crear nuevas instancias de enum.

2. Todos los valores de enumeración son públicos, estáticos y finales. Tenga en cuenta que esto sólo funciona para valores de enumeración. Podemos definir cualquier otro tipo de variables que no sean de enumeración tal como definimos variables en una clase normal, y estas variables pueden usar cualquier modificador que desee.

3. De forma predeterminada, enum implementa la interfaz java.lang.Comparable.

4.enum anula el método toString, por lo que si llamamos a Color. Blue.toString(), por defecto devolverá la cadena "Azul".

5.enum proporciona el método valueOf, que corresponde al método toString. Llamar a valueOf ("Azul") devolverá Color. Azul, por lo que debemos prestar atención a esto al reescribir el método toString nosotros mismos, y también debemos reescribir el método valueOf en consecuencia.

6.enum también proporciona el método de valores, lo que le permite iterar fácilmente a través de todos los valores de enumeración.

7.enum también tiene un método ordinal, que devuelve el orden de los valores de enumeración en la clase de enumeración, que depende del orden en que se declaran los valores de enumeración, donde Color. Red.ordinal() devuelve 0.

Ahora que entendemos estas características básicas, echemos un vistazo a cómo usarlas.

1. Recorre todos los valores de enumeración. Después de comprender el método de los valores, podemos usar hábilmente el bucle ForEach para recorrer los valores de enumeración.

for (Color c: Color.values())

System.out.println("Buscar valor: " c); list Defina métodos y variables en el ejemplo. Por ejemplo, podemos agregar un método a Color que devuelva un color aleatorio.

Colores de enumeración pública {

Rojo,

Verde,

Azul

/*< /p; >

*Defina una variable para representar el número de valores de enumeración.

*(Estoy un poco sorprendido de que Sun no proporcione directamente un método de tamaño para la enumeración).

*/

Número int estático privado = Color.values(). Longitud;

/**

*Devuelve un valor de enumeración aleatorio.

@Devuelve un valor de enumeración aleatorio.

*/

Color estático público getRandomColor(){

long random = sistema hora actual número de milisegundos;

Cambiar. ((int) aleatorio){

Caso 0:

Devuelve color. Rojo;

Caso 1:

Devuelve color. Verde;

Caso 2:

Devuelve el color. Azul;

Valor predeterminado: color de retorno. Rojo;

}

}

}

Se puede ver que la definición de variables y métodos en los tipos de enumeración es diferente a la de ordinario No hay diferencia entre métodos y variables definidas en una clase. Lo único a tener en cuenta es que las definiciones de variables y métodos deben colocarse después de todas las definiciones de valores de enumeración; de lo contrario, el compilador dará un error.

3. Reescribe el tostring y el valor del método.

Ya sabemos que enum proporciona toString, valueOf y otros métodos. Muchas veces necesitamos anular el método toString predeterminado, entonces, ¿para qué usamos enum? De hecho, esto no es diferente de anular el método toString de una clase normal.

….

Cadena pública toString(){

Cambiar(esto){

Concha roja:

Devuelve "Color. Rojo";

Cáscara verde:

Devuelve "Color. Verde";

Cáscara azul:

Devuelve "Color.Blue";

Valor predeterminado:

Devuelve "Color desconocido";

}

}

….

En este momento podemos ver que el color impreso por el código transversal anterior es

color. Color Rojo

. Verde (apellido); color verde

. Azul

en lugar de

rojo

Verde (apellido verde

azul);

Puedes ver que toString está realmente sobrecargado. En términos generales, al anular toString, también debemos anular el método valueOf para que sean coherentes.

4. Usar constructores

Aunque enum no puede tener un constructor público, aún podemos definir un constructor privado para usar dentro de la enumeración. Tomemos como ejemplo el color.

Colores de enumeración pública {

Rojo ("Esto es rojo"),

Verde ("Esto es verde"),

blue("Esto es azul");

desc de cadena privada;

color(desc de cadena){

this .

}

Cadena pública getDesc(){

Devolver this.desc

}

}

Aquí proporcionamos una información de descripción para cada color y luego definimos un constructor para recibir esta información de descripción.

Tenga en cuenta que el constructor aquí no puede ser público ni protegido, para garantizar que el constructor solo se pueda usar internamente y que el código del cliente no pueda crear instancias de valores de enumeración. Esto también es completamente razonable, porque sabemos que los valores de enumeración son constantes finales estáticas públicas.

5. Implementar interfaces específicas

Ya sabemos que enum puede definir variables y métodos. Su implementación de una interfaz es la misma que la de una clase normal, por lo que no daremos. un ejemplo aquí.

6. Defina sus propios métodos para los valores de enumeración.

Como vimos anteriormente, podemos definir algunos métodos para enum. De hecho, incluso podemos definir métodos para cada valor de enumeración. De esta manera, nuestro ejemplo anterior de reescritura en String se puede reescribir así.

Enumeración pública Color{

Rojo{

Cadena pública toString(){

Devuelve "Color.Red";

}

},

Verde {

Cadena pública toString(){

Devuelve "Color. Verde";

}

},

Azul{

Cadena pública toString(){

devuelve "color. blue";

}

};

}

Lógicamente este es mejor que el original. El método "global" toString es más limpio. .

En general, enum, como tipo recién definido, espera ayudar a los programadores a escribir código más simple y fácil de entender.

La gente piensa que generalmente no es necesario utilizar demasiado algunas características avanzadas de enum, de lo contrario violará la intención original de ser fácil de entender.

上篇: Las últimas noticias sobre la epidemia de Zibo de 2022. ¿Cuándo se levantará la epidemia de Zibo de 2022 y se reanudarán los viajes normales? Según informes recientes sobre epidemias locales en la provincia de Shandong, se distribuyen principalmente en Jinan, Yantai, Binzhou, Linyi, Zibo y otros lugares. El 27 de abril, Zibo informó 2 casos de infección asintomática. ¿Cuáles son las últimas noticias sobre la epidemia en Zibo en 2022? ¿Cuándo se levantará el confinamiento y se reanudarán los viajes normales? Las últimas noticias sobre la epidemia de Zibo en 2022 La última noticia sobre la epidemia de Zibo es que no hay casos confirmados a nivel local, pero el 27 de abril se informaron dos infecciones asintomáticas locales, ambas en el distrito de Zichuan. El editor de Tuliu resume a continuación las trayectorias relevantes de dos infecciones locales asintomáticas en Zibo de la siguiente manera: 1. Persona infectada asintomática local en Zibo - seguimiento de actividad: 21 de abril: condujo a otras ciudades para hablar de negocios. 22 de abril: Regresé a mi ciudad natal en Zichuan alrededor de las 14:00. Alrededor de las 16:00, fui de compras al supermercado Jiajiayue en el primer piso de SM y luego conduje hasta la Escuela de Idiomas Extranjeros Zibo para recoger a mis hijos de la escuela. Alrededor de las 17:20, visité el centro comercial Tianrun y Oumai Fashion Bakery por un tiempo y luego regresé a casa. 23 de abril: Se tomaron muestras de ácido nucleico en la comunidad Li San en Zichuan alrededor de las 11:00, se dirigió a la tienda de mascotas en el número 296 de Zikuang Road alrededor del 110 y se dirigió a Mr. Fried Skewers en la esquina sureste de Haihui Road, Zhong Street alrededor de las 11:00. 12:10 Compra para comer. 24 de abril: Conduzca hasta la escuela de idiomas extranjeros Zibo alrededor de las 6:50, vaya a Shantou Village, Zhaili Town alrededor de las 8:00, vaya de compras a Xinyang Fruit Fruit Store y Hemai Bakery, al lado, alrededor de las 11:30, y luego regrese a casa. 25 de abril: Por la mañana fui a la aldea de Shantou, en la ciudad de Zhaili, y alrededor de las 14:00 fui de compras a la calle de mujeres de la ciudad de la ropa. Llegué a casa sobre las 15:30 y no salí. 26 de abril: Vaya a Shantou Village, Zhaili Town alrededor de las 7:50, vaya a la tienda de carne fresca en la intersección de Yiyang Road y Chaoyang Road, Zhaili Town alrededor de las 13:30, reposte combustible en la gasolinera Huifeng 31 en Zhaili Town y regrese. casa a las 13:50. A las 15:40 fui a la clínica de fiebre del hospital del distrito de Zichuan. 27 de abril: Traslado al hospital designado a las 8:45. 2. Trayectoria de actividad de las personas infectadas asintomáticas en Zibo: 22 de abril: después de la escuela por la tarde, la persona infectada asintomática 1 condujo de regreso a su casa en Zichuan, la distancia era la misma que la persona infectada asintomática 1. 24 de abril: La persona infectada asintomática 1 regresó a la escuela, donde continuó asistiendo a clases, y regresó a su casa en Zichuan después de la escuela el día 26. 27 de abril: Traslado al hospital designado a las 8:45. ¿Cuándo se levantará la situación epidémica de Zibo y se reanudarán los viajes normales en 2022? Se espera que la actual epidemia local en Zibo se desbloquee entre mediados y finales de mayo de 2022 y se reanuden los viajes normales, pero depende de la notificación oficial. Porque si una comunidad o área quiere ser desbloqueada, primero debe despejar el área social. Durante los 14 días de control, si no aparecen nuevos casos, se desbloqueará el bloqueo. Pero si aumenta, el tiempo de desbloqueo se retrasará a medida que aumente el último caso confirmado. Las recientes epidemias locales reportadas en la provincia de Shandong se distribuyen principalmente en Jinan, Yantai, Binzhou, Linyi, Zibo y otros lugares. El 27 de abril, Zibo informó 2 casos de infección asintomática. ¿Cuáles son las últimas noticias sobre la epidemia de Zibo en 2022? ¿Cuándo se levantará el confinamiento y se reanudarán los viajes normales? Las últimas noticias sobre la epidemia de Zibo en 2022 La última noticia sobre la epidemia de Zibo es que no hay casos confirmados a nivel local, pero el 27 de abril se informaron dos infecciones asintomáticas locales, ambas en el distrito de Zichuan. El editor de Tuliu resume a continuación las trayectorias relevantes de dos infecciones locales asintomáticas en Zibo de la siguiente manera: 1. Persona infectada asintomática local en Zibo - seguimiento de actividad: 21 de abril: condujo a otras ciudades para hablar de negocios. 22 de abril: Regresé a mi ciudad natal en Zichuan alrededor de las 14:00. Alrededor de las 16:00, fui de compras al supermercado Jiajiayue en el primer piso de SM y luego conduje hasta la Escuela de Idiomas Extranjeros Zibo para recoger a mis hijos de la escuela. Alrededor de las 17:20, caminé un rato por el centro comercial Tianrun y Omai Fashion Bakery y luego regresé a casa. 23 de abril: Tome una muestra de ácido nucleico en la comunidad Li San en Zichuan alrededor de las 11:00, conduzca hasta la tienda de mascotas en el número 296 de Zikuang Road, el Museo de la Vida Mengpet y la tienda Mr. Fried Chuan Chuan en la esquina sureste de 65438 Zhongjie Haihui Road. Alrededor de las 12:10 Comer. 24 de abril: Conduzca hasta la escuela de idiomas extranjeros Zibo alrededor de las 6:50, vaya a Shantou Village, Zhaili Town alrededor de las 8:00, vaya de compras a Xinyang Fruit Fruit Store y Hemai Bakery, al lado, alrededor de las 11:30, y luego regrese a casa. 25 de abril: vaya a Shantou Village, Zhaili Town por la mañana y vaya de compras a Women's Street de Garment City alrededor de las 14:00. Llegué a casa sobre las 15:30 y no salí. 下篇: ¿Qué significa la comunicación 433?