gpt4 book ai didi

java - 来自 Guava 或 Java 枚举的 ImmutableSet

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:48:11 26 4
gpt4 key购买 nike

我读了here关于使用 Guava 中的 ImmutableSet 的一个很好的例子。为了完整起见,在此报告该示例:

public static final ImmutableSet<String> COLOR_NAMES = ImmutableSet.of(
"red",
"orange",
"yellow",
"green",
"blue",
"purple");

class Foo {
Set<Bar> bars;
Foo(Set<Bar> bars) {
this.bars = ImmutableSet.copyOf(bars); // defensive copy!
}
}

问题是,我可以通过使用 Java 枚举获得相同的结果吗?

附言:This question给我的脑子增添了更多的困惑!

最佳答案

Can I obtain the same result by using a Java enum?

是的,你可以。你试过了吗?

仅供引用 还有 ImmutableSet 的特殊版本,它保存枚举的常量 - Sets.immutableEnumSet (它在内部使用 EnumSet)。

一些示例(解释 Wiki 示例):

public class Test {

enum Color {
RED, ORANGE, YELLOW, GREEN, BLUE, PURPLE;
}

static class Baz {
ImmutableSet<Color> colors;

Baz(Set<Color> colors) {
this.colors = Sets.immutableEnumSet(colors); // preserves enum constants
// order, not insertion order!
}
}

public static void main(String[] args) {
ImmutableSet<Color> colorsInInsertionOrder = ImmutableSet.of(
Color.GREEN, Color.YELLOW, Color.RED);
System.out.println(colorsInInsertionOrder); // [GREEN, YELLOW, RED]
Baz baz = new Baz(colorsInInsertionOrder);
System.out.println(baz.colors); // [RED, YELLOW, GREEN]
}
}

编辑(在 OP 评论之后):

你想要 ImmutableSet 中的所有枚举常量吗?只是做:

Sets.immutableEnumSet(EnumSet.allOf(Color.class));

关于java - 来自 Guava 或 Java 枚举的 ImmutableSet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15952128/

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