以下のビットマスクの代わりに使用しようとしています
public static Set<Amenities> fromBitFlags(int bitFlag) {
return ALL_OPTS.stream().filter(a -> (a.ameityId & bitFlag) > 0).collect(Collectors.toSet());
}
単純なセットの代わりにEnumSetを返したい(キャストのためにEnumSetの有用性を失いたくない)。
EnumSetを収集するためのカスタムコレクターの作成方法に関する指示が必要です。
toCollection(Supplier)
を使用できます:
return ALL_OPTS.stream().filter(a -> (a.ameityId & bitFlag) > 0)
.collect(Collectors.toCollection(() -> EnumSet.noneOf(Amenities.class)));
toCollection
メソッドは、結果を格納するための空のコレクションを作成する必要があるラムダを受け取ります。ここでは、EnumSet.noneOf
呼び出しを使用して空のEnumSet
を作成します。 EnumSet
の場合、この列挙型を設定する列挙型を常に(暗黙的または明示的に)指定する必要があることに注意してください。