番石榴:如何键入通用枚举的幂集列表

Guava: How to type a List of powersets of generic Enums

我正在编写一个函数,它需要三个不同枚举的所有 powerSet 的列表。我正在使用 Guava 的 Sets class,但我在输入时遇到了问题。

Set<? extends Enum> allSlots = EnumSet.allOf(Slot.class);
Set<Set<? extends Enum>> slotsPS = Sets.powerSet(allSlots);

Set<Set<Day>> daysPS = Sets.powerSet(EnumSet.allOf(Day.class));
Set<Set<Time>> timesPS = Sets.powerSet(EnumSet.allOf(Time.class));
List<Set<Set<? extends Enum>>> allPS = new ArrayList<>();
allPS.add(slotsPS);

我已将其缩小到 Guava 的 powerSet 函数,这是我沮丧的根源。

Set<Set<? extends Enum>> slotsPS = Sets.powerSet(allSlots); 给出错误:

incompatible types: no instance(s) of type variable(s) E exist so that Set<Set<E>> conforms to Set<Set<? extends Enum>>
  where E is a type-variable:
    E extends Object declared in method <E>powerSet(Set<E>)

Sets.powerSet(allSlots)Set<Set<Slot>>,因此您需要使用:

Set<? extends Set<? extends Enum<?>>>

如果您想删除实际的枚举类型。