es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Establecer múltiples prioridades a un Enum | JAVA

El flujo de mis estados es el siguiente. Donde A, B, C, D, X son estados que se utilizan como enums.

A -> B -> C -> D -> E

A -> X
B -> X
C -> X
D -> X

Las flechas significan que el estado es alcanzable. Es decir, A -> X significa que A puede alcanzar X pero no a la inversa.
La forma en que estoy implementando es:

public enum States{
A(0), B(1), C(2), D(3);
private int priority;

}

Hay un estado flotante X, al que se puede llegar desde A, B, C y D.
Quiero establecer la prioridad de X de la manera anterior. ¿Hay alguna forma de hacerlo? Es decir, ¿establecer múltiples prioridades para un solo enum?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Desafortunadamente, no es posible establecer múltiples prioridades para un solo enum en Java. Las constantes enum en Java son únicas y no pueden tener valores o prioridades duplicadas.

    Una solución podría ser crear un enum separado para el estado flotante X y asignarle una prioridad por separado. De esta manera, puede mantener el orden de prioridad para el resto de los estados y también asignar una prioridad a X.

    Por ejemplo:

    public enum Estados{
        A(0), B(1), C(2), D(3);
        private int prioridad;
        ...
        }
    
    public enum EstadosFlotantes{
        X(4);
        private int prioridad;
        …
    }
    

    Aquí, la prioridad para X se puede establecer por separado en el enum EstadosFlotantes sin afectar el orden de prioridad del enum Estados.

    Alternativamente, si no desea crear un enum separado para X, puede asignar un valor de marcador de posición para X en el enum Estados y manejarlo por separado en la lógica de su código. Por ejemplo:

    public enum Estados{
        A(0), B(1), C(2), D(3), X(Integer.MAX_VALUE);
        private int prioridad;
        …
        }
    

    Aquí, X se le asigna un valor de marcador de posición de Integer.MAX_VALUE, que es el valor entero más alto en Java. De esta manera, X se puede tratar como un estado flotante sin afectar el orden de prioridad de los demás estados.

    En última instancia, la solución depende de los requisitos y limitaciones específicos de su proyecto.

Comments are closed.