Как и предлагал Майкл, не раскрывайте детали реализации для внешнего мира.
Создайте статический метод, который преобразует битовую маску int в EnumSet:
public static EnumSet< DaysOfWeek > fromBitValues (
final int origBitMask
)
{
final EnumSet< DaysOfWeek > ret_val =
EnumSet.noneOf( DaysOfWeek.class );
int bitMask = origBitMask;
for ( final DaysOfWeek val : DaysOfWeek.values( ) )
{
if ( ( val.bitValue & bitMask ) == val.bitValue )
{
bitMask &= ~val.bitValue;
ret_val.add( val );
}
}
if ( bitMask != 0 )
{
throw
new IllegalArgumentException(
String.format(
"Bit mask value 0x%X(%d) has unsupported bits " +
"0x%X. Extracted values: %s",
origBitMask,
origBitMask,
bitMask,
ret_val
)
);
}
return ret_val;
}
Вам также может понадобиться статический метод, который преобразует EnumSet в битовую маску, я оставляю это упражнение читателю.
Кроме того, если смотреть на ваше перечисление, «Ежедневно», «По выходным» и «Будни» там не принадлежат. Они являются совокупностью ваших других значений DaysOfWeek и поэтому должны быть определены как EnumSets.