将两个ImmutableEnumSet与Guava合并 [英] Union two ImmutableEnumSets with Guava

查看:91
本文介绍了将两个ImmutableEnumSet与Guava合并的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想从番石榴中合并两个 ImmutableEnumSets .这是我的尝试:

I want to union two ImmutableEnumSets from Guava. Here's my try on it:

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 字段未编译,失败,显示

The field ourColorSet does not compile, it fails with

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

工会如何正确完成?

推荐答案

好吧, Sets.union 返回一个 Sets.SetView< E> ,而不是一个ImmutableSet< E> .因此,您可以执行以下操作:

Well, Sets.union returns a Sets.SetView<E>, not an ImmutableSet<E>. So you can do this:

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

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

... which in many cases would be fine, or use Set instead:

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

这仍然是无法修改的,只是没有 ImmutableSet< E> 的编译时类型.如果确实需要,可以使用 immutableCopy():

That's still going to be unmodifiable, it just doesn't have the compile-time type of being ImmutableSet<E>. If you really, really need that, you can use immutableCopy():

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

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

... or to create another enum-aware set:

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

这篇关于将两个ImmutableEnumSet与Guava合并的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆