gpt4 book ai didi

java - 将两个 ImmutableEnumSet 与 Guava 联合

转载 作者:行者123 更新时间:2023-12-01 14:08:32 25 4
gpt4 key购买 nike

我想从 Guava 合并两个 ImmutableEnumSets。这是我的尝试:

public final class OurColors {

public enum Colors {
RED,
GREEN,
BLUE,
YELLOW,
PINK,
BLACK
}

public final static ImmutableSet<Colors> myColorSet =
Sets.immutableEnumSet(Colors.BLUE,
Colors.GREEN);

public final static ImmutableSet<Colors> yourColorSet =
Sets.immutableEnumSet(Colors.YELLOW,
Colors.PINK);

public final static ImmutableSet<Colors> ourColorSet =
Sets.union(myColorSet, ourColorSet);
}

字段 ourColorSet 无法编译,失败并显示

Type mismatch: cannot convert from Sets.SetView<OurColors.Colors> to
ImmutableSet<OurColors.Colors>

联合是如何正确完成的?

最佳答案

好吧,Sets.union返回 Sets.SetView<E> ,而不是 ImmutableSet<E> .所以你可以这样做:

public final static Sets.SetView<Colors> ourColorSet =
Sets.union(myColorSet, yourColorSet);

... 在很多情况下都可以,或者使用 Set而是:

public final static Set<Colors> ourColorSet =
Sets.union(myColorSet, yourColorSet);

这仍然是不可修改的,它只是没有 ImmutableSet<E> 的编译时类型.如果您真的非常需要,可以使用 immutableCopy() :

public final static ImmutableSet<Colors> ourColorSet =
Sets.union(myColorSet, yourColorSet).immutableCopy();

...或创建另一个枚举感知集:

public final static ImmutableSet<Colors> ourColorSet =
Sets.immutableEnumSet(Sets.union(myColorSet, yourColorSet));

关于java - 将两个 ImmutableEnumSet 与 Guava 联合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33820775/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com