Tabla / matriz basada en enumeración en Java

Tengo dos enumeraciones: levelcon 3 valores y criticalitycon 4 valores. Una combinación de esos dos mapas a uno de los 8 valores de priorityenum. El mapeo no es lineal y puede cambiar en el futuro.

¿Cuál es la mejor manera * de implementar una función estática que toma nivel y criticidad y genera una prioridad?

* Lo mejor es que sea ​​fácil de leer y comprender, fácil y seguro de cambiar, y no un gran rendimiento. Puntos adicionales para una solución que tenga en cuenta que el dominio de entrada puede cambiar en el futuro.

Formas que consideré hasta ahora:

interruptor anidado ... caso . Muchas líneas y mucho código repetitivo. También propenso a errores si olvida devolver un valor en un caso. Básicamente el código se ve así:

    switch (bc) {
        case C1:
            switch (el) {
                case E1:
                    return EmergencyPriority.P1;
                case E2:
                    return EmergencyPriority.P2;
                case E3:
                    return EmergencyPriority.P3;
            }
        case C2:
            switch (el) {
                case E1:
                    return EmergencyPriority.P2;
                case E2:
                    return EmergencyPriority.P3;
                case E3:
                    return EmergencyPriority.P4;
            }
        case C3:
            switch (el) {
                case E1:
                    return EmergencyPriority.P4;
                case E2:
                    return EmergencyPriority.P5;
                case E3:
                    return EmergencyPriority.P6;
            }
        case C4:
            switch (el) {
                case E1:
                    return EmergencyPriority.P6;
                case E2:
                    return EmergencyPriority.P7;
                case E3:
                    return EmergencyPriority.P8;
            }
    }

Mutikey Map requiere una biblioteca externa y no he encontrado una manera de insertar bien los valores iniciales sin muchas llamadas a funciones y claves compuestas repetitivas.


if..else if .. else básicamente igual que la caja del interruptor pero con más código repetitivo. Sin embargo, es menos propenso a errores.


La matriz bidimensional al usar los valores de enumeración como enteros para los índices de matriz corre el riesgo de fallar silenciosamente si los valores de enumeración posicionales cambian.


Tu solución aquí

Respuesta 1

Sé que es una matriz, pero soy completamente nuevo en JSON y necesito ayuda para comprender cómo está estructurado, aquí está mi intento de extraer datos: String JSonString = readURL ("// mi URL está aquí"); ...

Necesito un flujo de trabajo como el siguiente: // cargar xyz.com en la ventana del navegador // el navegador está activo, lo que significa que los usuarios pueden interactuar con él browser.load ("http://www.google.com"); // devuelve el HTML de ...

Android Studio tiene soporte para macros, que les gusta llamar plantillas en vivo, lo cual es bueno, pero nadie en ningún lugar se molesta en explicar cómo usarlas, y menos aún en Android Studio. Es obvio que el "...

Domino bien el patrón de visitante. Sin embargo, me pregunto algo. La motivación más importante para usar el Patrón de visitante es agregar lógica que involucre modelos de datos específicos en el lado del cliente sin necesidad de verificar ...