Cómo establecer el valor de una enumeración?

Zephyr:

Tengo el siguiente enum:

enum ColumnType {
    TEXT,
    NUMERIC,
    DATE
}

Cuando se utiliza este enum, tengo que ser capaz de especificar un formato de fecha Stringsi se utiliza el DATEvalor. ¿Como podría hacerlo?

Por ejemplo, en mi código Quiero llamar a un método que utiliza algo similar a esto:

foo(ColumnType.DATE("yyyyMMdd");

Más tarde tendría que ser capaz de recuperar ese valor usando object.getColumnType.getDateFormat()si el ColumnTypees DATE. ¿Es esto posible?

La documentación que he podido encontrar hasta ahora sugieren formas de establecer el valor de una enumeración, pero todos ellos muestran cómo configurarlo para todos los valores de enumeración, no individual.

Mi comprensión de las enumeraciones es bastante básico, así que me disculpo si esto no está redactado correctamente. ¡Gracias!

EDITAR:

Las necesidades de formato de fecha que se establezcan en tiempo de ejecución como el usuario va a seleccionar / introducir la cadena de formato de fecha.

Peter Lawrey:

Tu puedes hacer

enum ColumnType {
    TEXT,
    NUMERIC,
    DATE_YYYYMMDD,
    oher date format
}

Sin embargo, si usted quiere cualesquiera formatos que necesita una clase para envolver estos

class ColumnTypeFormat {
    ColumnType columnType;
    String format;
}

foo(new ColumnTypeFormat(ColumnType.DATE, "yyyyMMdd"));

Se pueden combinar estos con una interfaz común

interface ColumnType {
    String getFormat();
    Class getType();
}

enum SimpleColumnType implements ColumnType {
    TEXT(String.class, "%s"),
    NUMERIC(BigDecimal .class, "%f");

    private Class type;
    private String format;

    SimpleColumnType(Class type, String format) {
        this.type = type;
        this.format = format;
    }

    @Override
    public Class getType() { return type; }

    @Override
    public String getFormat() { return format; }
}

class DateColumnType implements ColumnType {
    private final String format;

    public DateColumnType(String format) {
        this.format = format;
    }

    @Override
    public Class getType() { return LocalDate.class; }

    @Override
    public String getFormat() { return format; }
}

Esto le permite tener algunos tipos fijos, pre-creados en el enum, sino también crear otras adicionales sobre la marcha con una interfaz común.

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=197399&siteId=1
Recomendado
Clasificación