tipos tipo que objeto enumerado enum ejemplos declara datos constantes como java enums constants

tipo - ¿Cómo se definen las constantes estáticas en una enumeración de Java?



tipos de datos objeto en java (2)

¿Hay alguna forma de definir variables finales estáticas (efectivamente constantes) en una declaración de enumeración de Java?

Lo que quiero es definir en un lugar el valor literal de la cadena para los valores BAR (1 ... n):

@RequiredArgsConstructor public enum MyEnum { BAR1(BAR_VALUE), FOO("Foo"), BAR2(BAR_VALUE), ..., BARn(BAR_VALUE); private static final String BAR_VALUE = "Bar"; @Getter private final String value; }

Recibí el siguiente mensaje de error para el código anterior: No se puede hacer referencia a un campo antes de que esté definido .


Como sugiere IntelliJ IDEA cuando se extrae una constante, crea una clase interna estática. Este enfoque funciona:

@RequiredArgsConstructor public enum MyEnum { BAR1(Constants.BAR_VALUE), FOO("Foo"), BAR2(Constants.BAR_VALUE), ..., BARn(Constants.BAR_VALUE); @Getter private final String value; private static class Constants { public static final String BAR_VALUE = "BAR"; } }


Tal vez debería considerar dividir esta enumeración en dos campos: una enumeración y un int:

@RequiredArgsConstructor public enum MyEnum { BAR("Bar"), FOO("Foo") @Getter private final String value; }

Y luego usa:

private MyEnum type; private int value;

(Puedes poner eso en una clase o no, si tiene sentido para ti)