Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Adding enum values?


Can I create an enum (constants to use in a switch statement) from two enums???
Something like...

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

Any idea??? I really want to use switch and have separated the enums Thanks!!!

like image 273
ralugm Avatar asked Jun 26 '26 23:06

ralugm


1 Answers

No. You could create a Day enum and explicitly list each value, providing a constructor for each type as well... but personally I'd use:

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

You could then also publish an EnumSet<Day> for work days and another for non-work days.

like image 82
Jon Skeet Avatar answered Jun 29 '26 14:06

Jon Skeet



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!