J'essaye d'utiliser à la place du bitmask ci-dessous le code
public static Set<Amenities> fromBitFlags(int bitFlag) {
return ALL_OPTS.stream().filter(a -> (a.ameityId & bitFlag) > 0).collect(Collectors.toSet());
}
Je voudrais retourner EnumSet au lieu d'un ensemble simple (ne veux pas perdre l'utilité d'EnumSet juste à cause du casting).
Besoin de quelques instructions sur la façon de créer un collecteur personnalisé pour collecter EnumSet.
Vous pouvez utiliser toCollection(Supplier)
:
return ALL_OPTS.stream().filter(a -> (a.ameityId & bitFlag) > 0)
.collect(Collectors.toCollection(() -> EnumSet.noneOf(Amenities.class)));
La méthode toCollection
reçoit un lambda qui doit créer une collection vide pour stocker le résultat. Ici, nous créons EnumSet
vide en utilisant EnumSet.noneOf
appel. Notez que pour EnumSet
, vous devez toujours spécifier (implicitement ou explicitement) l'énumération pour laquelle cet ensemble est défini.