1つの列挙型の値を設定するには?

ゼファー:

私は次のことを持っていますenum

enum ColumnType {
    TEXT,
    NUMERIC,
    DATE
}

これを使用するとenum、私は日付書式を指定できるようにする必要がString使用している場合、DATE値を。私はそれをどのように行うのでしょうか?

例えば、私のコードでは、私はこれに似たものを使用してメソッドを呼び出すようにしたいです:

foo(ColumnType.DATE("yyyyMMdd");

その後、私が使用してその値を取得できるようにする必要があるだろうobject.getColumnType.getDateFormat()場合ColumnTypeですDATEこれさえ可能ですか?

私がこれまでに見つけることができましたドキュメントは、列挙型の値を設定する方法を提案したが、すべての列挙値のためにそれを設定するためにどのように彼らはすべてのショーではなく、個々の1。

列挙型の私の理解では、かなり基本的なものですので、これは正しく文言されていない場合、私はお詫び申し上げます。ありがとう!

EDIT:

日付の形式は、ユーザーが日付形式の文字列を入力/選択されるように、実行時に設定する必要があります。

ピーターLawrey:

できるよ

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

あなたは、任意のフォーマットをしたい場合しかし、あなたはこれらをラップするクラスが必要です

class ColumnTypeFormat {
    ColumnType columnType;
    String format;
}

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

あなたは、共通のインターフェースでこれらを組み合わせることができます

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; }
}

これは、あなたがいくつかの固定、事前に作成した型を持つことを可能にするenumだけでなく、共通のインターフェースとその場で追加のものを作成します。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=197396&siteId=1