tengo una clase declarar constantes para mi aplicaciónEnum de Java: ¿Reformular las sentencias del conmutador 'requiere expresión constante' error de compilación?
public class GroupConstants {
..
public static final int INTEGER_VALUE = 1;
public static final int LONG_VALUE = 2;
public static final int STRING_VALUE = 3;
..
}
En el código no es un conjunto de instrucciones switch
private static Object getValue(String stringValue, Parameter parameter) throws InvalidPatternException
{
Object result=null;
switch (parameter.getDataType())
{
case GroupConstants.STRING_VALUE: // String value
result=stringValue;
break;
case GroupConstants.INTEGER_VALUE: // Long value
case GroupConstants.LONG_VALUE:
case GroupConstants.BOOLEAN_VALUE:
case GroupConstants.DATE_VALUE:
..
}
Quiero refactorizar los valores constantes int a ser representado por una enumeración
public enum DataType {
UNKNOWN_VALUE(0,"unknown"),
INTEGER_VALUE(1,"integer"),
LONG_VALUE(2,"long"),
STRING_VALUE(3,"string"),
BOOLEAN_VALUE(4,"boolean"),
..
}
por lo que mi código podría tener este aspecto
@Deprecated
public static final int INTEGER_VALUE = DataType.INTEGER_VALUE.getId();
y las horas extraordinarias puedo cambiar las instrucciones de mi interruptor. Cuando cambio la referencia int final estática para apuntar a la enumeración, todas mis sentencias switch se rompen.
[javac] /home/assure/projects/tp/main/src/a/b/c/DDDDDManagerBean.java:1108: constant expression required
[javac] case GroupConstants.INTEGER_VALUE:
[javac] ^
[javac] /home/assure/projects/tp/main/src/a/b/c/ParameterComponent.java:203: constant expression required
[javac] case GroupConstants.INTEGER_VALUE:
[javac] ^
[javac] /home/assure/projects/tp/main/src/a/b/c/ParameterComponent.java:268: constant expression required
[javac] case GroupConstants.INTEGER_VALUE:
[javac] ^
[javac] /home/assure/projects/tp/main/src/a/b/c/ParameterComponent.java:316: constant expression required
[javac] case GroupConstants.INTEGER_VALUE:
[javac] ^
[javac] /home/assure/projects/tp/main/src/a/b/c/ParameterComponent.java:436: constant expression required
[javac] case GroupConstants.INTEGER_VALUE:
No quiero ser forzado a cambiar todos los interruptores todavía, ¿entonces hay un trabajo limpio?
no es su GroupConstants a la antigua? ¿No debería ser el caso de DataType.INTEGER_VALUE: debería estar en el error del compilador? –
Basado en lo que has mostrado hasta ahora, no puedo ver cuál es el problema; esto debería funcionar en función de lo que supongo * que está haciendo en, por ejemplo, 'ParameterComponent'. Pero, de nuevo, los mensajes de error no tienen nada que ver con la nueva clase 'DataType', así que tal vez estoy transfiriendo erróneamente el código que está causando los errores de compilación. ¿Podría pegar un poco del código que no compila (por ejemplo, la clase ParameterComponent) y resaltar dónde se produce el error? –