Перечисление, которое принадлежит определенному типу - PullRequest
1 голос
/ 20 декабря 2011

Этот вопрос может показаться глупым, но я не знаю, как решить эту проблему:

У меня есть некоторые перечисляемые классы, которые моделируют некоторые константы для разрабатываемого приложения, например ::10000

public enum Daily{GROCERIES, SUPPLIES,....}

public enum Monthly{NEWSPAPER, MAGAZINES,....}

public enum BiMonthly{....}

И скажем, у меня есть объект, поле которого смоделировано после любого из предыдущих перечислений:

public class SomeObject{
    ...

    private Daily/Monthly/ByMonthly category;

    ...
}

как мне это смоделировать? Я не знаю, помещаю ли все перечисления в класс и создаю поле моего объекта типа Something<E extends Enum> или создаю интерфейс без методов, которые реализуют все мои перечисления, и создает поле моего объекта типа EnumInterface .

Спасибо

Ответы [ 3 ]

3 голосов
/ 20 декабря 2011

Я думаю, вы должны по-разному структурировать свои Enums / Classes. Что-то вроде:

public enum Recurrence {
    DAILY,
    MONTHLY,
    BIMONTHLY
}

public enum Distributions {
    GROCERIES(Recurrence.DAILY),
    SUPPLIES(Recurrence.DAILY),
    NEWSPAPER(Recurrence.MONTHLY),
    MAGAZINES(Recurrence.BIMONTHLY);

    private Recurrence recurrence;

    private Distributions(Recurrence recurrence) {
        this.recurrence = recurrence;
    }

    public Recurrence getRecurrence() {
        return this.recurrence;
    }
}

public class SomeObject{
    ...

    private Distributions distribution;

    ...
}
1 голос
/ 20 декабря 2011

Похоже, что ваша модель наизнанку. Что если у вас есть перечисление категории, например:

public enum Category { DAILY, MONTHLY, BIMONTHLY }

вместо

0 голосов
/ 20 декабря 2011

Вы можете создать enum внутри самого класса, например:

public class SomeObject {...

public enum Daily {GROCERIES, SUPPLIES, ....}

public enum Monthly {NEWSPAPER, MAGAZINES, ....}

public enum BiMonthly {....}

... }

затем создайте bean (setter/ getter) для каждого перечисления, а затем вы можете просто получить доступ ко всем перечисленным как обычная переменная.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...