Tipo de enumeración Enum en java

Tabla de contenido

1. Los tipos de enumeración pueden realizar enumeración y numeración

2. Cómo utilizar la enumeración

3. Pros y contras de la enumeración

4. Resumen


Artículo de referencia: https://zhuanlan.zhihu.com/p/51296740

1. Los tipos de enumeración pueden realizar enumeración y numeración

  • Defina constantes y podrá definir el formato de las constantes (es decir, puede definir múltiples variables con una determinada estructura de datos);
  • Numere automáticamente múltiples constantes enumeradas;

como:

Defina una clase de enumeración de instrucciones, enumere 7 tipos de instrucciones, cada instrucción contiene el objetivo de instrucción y la acción de acción de instrucción.

public enum CommandType {
    CPU_LOAD("cpu", "load"),
    DISK_FILL("disk", "fill"),
    MEM_LOAD("mem", "load"),
    NETWORK_DELAY("network", "delay"),
    NETWORK_LOSS("network", "loss"),
    DESTROY("nil", "nil"),
    STATUS("nil", "nil");

    private String target;
    private String action;

    CommandType(String target, String action) {
        this.target = target;
        this.action = action;
    }

    public String getTarget() {
        return target;
    }

}

2. Cómo utilizar la enumeración

Artículo de referencia: enumeración de Java (enum) explicada en detalle 7 uso común


3. Precauciones para el uso de enumeración

Artículo de referencia: ¿Qué tiene de malo la enumeración de Java? ¿Cuáles son las consideraciones para los requisitos de enumeración en el "Manual de desarrollo de Alibaba JAVA"?

1) Las enumeraciones se pueden utilizar para parámetros y valores de retorno. Sin embargo, considerando la arquitectura de microservicio actual, es posible que la interfaz entre el servidor y el cliente no se actualice al mismo tiempo, por lo que si la enumeración se usa como valor de retorno, puede causar problemas de deserialización en la parte sin la clase de enumeración correspondiente ; Al mismo tiempo, si se usa la enumeración como parámetro en la interfaz, es posible, las razones son las siguientes.

Autor:
Enlace Norte-Sur : https: //www.zhihu.com/question/52760637/answer/349380925
Fuente: saber casi con
derechos de autor del autor. Para reimpresiones comerciales, comuníquese con el autor para su autorización. Para reimpresiones no comerciales, indique la fuente
 

De hecho, el uso de la enumeración traerá consigo el problema de la compatibilidad extendida. Muchos encuestados lo han dicho muy bien. Hablaré sobre la razón por la cual la enumeración se puede usar en los parámetros.

Primero asumamos que la expansión de la enumeración solo agrega valores, no los disminuye. Por ejemplo, el género originalmente era masculino y femenino, y ahora necesitamos agregar un transgénero, pero rara vez necesitamos decir que el masculino o femenino existente en el género debería eliminarse. (Creo que esta suposición es la premisa de que el parámetro puede usar el tipo de enumeración)

Bajo este supuesto, si usamos el tipo de enumeración en la interfaz, como se describe en el manual de desarrollo de Java por el hermano Gu Jin, se divide en dos casos: parámetro y valor de retorno.

Ya sea la llamada mutua entre microservicios o la llamada del cliente del teléfono móvil al servidor, es difícil que el servidor y el cliente se actualicen juntos sin tiempo de inactividad. A menudo, el servidor es el primero en admitir nuevas funciones y luego Actualicemos al cliente gradualmente. Creo que el hermano Gu Jin dijo que los parámetros se pueden enumerar, lo que también se basa en este método de actualización.

Porque si el servidor de repente comienza a devolver el nuevo género de transgénero, el cliente no puede comerlo (no se puede realizar la deserialización) y el cliente explotará. Pero si el servidor solo comienza a aceptar el nuevo género en el parámetro, no tendrá miedo del cliente anterior. De todos modos, el cliente anterior todavía está allí y continúa enviando los dos géneros de hombre y mujer. El servidor reconoce ambos géneros, por lo que no habrá error. Ambas partes pueden permanecer en paz y esperar a que se actualicen todos los clientes.

Sin embargo, si usamos una cadena en lugar de una enumeración, el servidor devuelve precipitadamente un nuevo valor y el cliente no sabe cómo manejarlo, y pueden surgir otros problemas, como problemas a nivel empresarial, como un error de cálculo del dinero. Por lo tanto, es posible que el código del cliente deba actualizarse un poco primero para permitirle manejar este nuevo valor. Creo que Ali pone este estándar en el manual, que es también la experiencia y las lecciones de muchos años. Los dos males son el menor. Porque muchas aplicaciones no pueden obligar al cliente a actualizarse juntas. Especialmente para los clientes móviles, es posible que sea necesario revisar ios y es difícil sincronizar la actualización entre el cliente y el servidor. Si se trata de un microservicio, también es difícil actualizar los dos microservicios juntos mediante el acoplamiento de enumeración sin tiempo de inactividad.


4. Resumen

La enumeración consiste en enumerar todo lo que se conoce. Como proveedor de la biblioteca de segunda / tercera parte, lo que yo apoyo es lo que usa. Una vez que se actualiza la versión de la biblioteca, la interfaz admite más. Los usuarios no la utilizarán a menos que lo sepan, y los usuarios no pasarán parámetros que no sean compatibles con la interfaz. Por lo tanto, la enumeración generalmente no es un problema como parámetro de entrada de la interfaz.

Pero como valor de retorno, la situación se invierte. La interfaz devuelve el valor de retorno de la clase de enumeración a la biblioteca de segunda o de terceros. Como consumidor, no hay forma de deserializar la clase de enumeración devuelta por la interfaz y definitivamente se producirá un error.

 

Supongo que te gusta

Origin blog.csdn.net/Longtermevolution/article/details/108399737
Recomendado
Clasificación