2


2 つの列挙型から列挙型 (switch ステートメントで使用する定数) を作成できますか?
何かのようなもの...

public class Test{

    public enum WorkDay {Monday, Tuesday, Wednesday, Thursday,Friday};
    public enum WeekEndDay {Sunday, Saturday};

    // it doesn't work ):
    public enum Day{WorkDay.values(),WeekEndDay.values()}; 

    public static void Action(Day d) {

        switch(d){
            case Monday:
                ...;
                break;
            case Tuesday:
                ...;
                break;
            case ...:
                ...;
                break;
            case Saturday:
                ...;
                break;
        }
    }
}

何か案が???私は本当にスイッチを使いたいので、列挙型を分離しましたありがとう!!!

4

3 に答える 3

10

いいえ。Day列挙型を作成し、各値を明示的にリストして、各タイプのコンストラクターを提供することもできます...しかし、個人的には次を使用します。

public enum Day {
    MONDAY(true),
    TUESDAY(true),
    WEDNESDAY(true),
    THURSDAY(true),
    FRIDAY(true),
    SATURDAY(false),
    SUNDAY(false);

    private final boolean workDay;

    private Day(boolean workDay) {
        this.workDay = workDay;
    }

    public boolean isWorkDay() {
        return workDay;
    }
}

次に、営業日用と非営業日用に発行することできます。EnumSet<Day>

于 2012-04-20T13:21:13.137 に答える
0

WorkDay、WeekEndDay、Dayはすべて異なるクラスであるため、列挙型を組み合わせることはできません。あなたができる最善のことは:

public enum Day {
    Monday(false),
    Tuesday(false),
    Wednesday(false),
    Thursday(false),
    Friday(false),
    Saturday(true),
    Sunday(true);
    private boolean isWeekendDay;
    private Day(boolean isWeekendDay) {
        this.isWeekendDay = isWeekendDay;
    }
    public boolean isWeekendDay() {
        return isWeekendDay;
    }
}
于 2012-04-20T13:23:41.293 に答える
0

効果的な Java には、要件を満たすことができる enum の非常に良い例があります。著者は戦略パターンを提案します。コードは次のようになります。

// The strategy enum pattern
enum SomeActionDay {
    MONDAY(DayActionType.WEEKDAY), TUESDAY(DayActionType.WEEKDAY),
    WEDNESDAY(DayActionType.WEEKDAY), THURSDAY(DayActionType.WEEKDAY),
    FRIDAY(DayActionType.WEEKDAY),
    SATURDAY(DayActionType.WEEKEND), SUNDAY(DayActionType.WEEKEND);
private final DayActionType dayType;
SomeActionDay(DayActionType dayType) { this.dayType = dayType; }
return-type takeAction(parameters) {
    return dayType.takeAction(parameters);
}
// The strategy enum type
private enum DayActionType {
WEEKDAY {
return action(parameters) {
//business logic for weekday. return value
}
},
WEEKEND {
return action(parameters) {
//business logic for weekday. return value
}
};

abstract returntype action(parameters);

}
}
于 2012-04-20T13:41:36.317 に答える