有任何方法来修改EnumSet对象吗?看起来(例如) EnumSet.add是从AbstractSet继承的,这会抛出一个UnsupportedOperationException。
然而,看起来EnumSet似乎是可修改的;否则为什么要有一个clone()方法,为什么番石榴会有Sets.immutableEnumSet()呢?有没有一种EnumSet的方法从我的脑海中消失了?
发布于 2018-03-13 18:17:06
是的EnumSet是可修改的。如果您想要创建一个不变的EnumSet,那么使用immutableEnumSet。
EnumSet支持。参数:元素-集合应该包含的所有相同枚举类型的元素。 返回:包含这些元素的不可变集,减去重复项。
发布于 2018-03-13 18:25:38
EnumSet只是一个抽象类。它的实现覆盖了add方法,这使得它是可变的,因此下面的内容是可能的
EnumSet<MyEnum> enumSet = EnumSet.of(MyEnum.A);
enumSet.add(MyEnum.B);
private static enum MyEnum {
A,B,C;
}发布于 2018-03-13 18:36:08
EnumSet是一个抽象类,它有实现RegularEnumSet和JumboEnumSet。两个冲击add和是可变的。EnumSet.of(...)根据枚举数选择RegularEnumSet或JumboEnumSet。
https://stackoverflow.com/questions/49263098
复制相似问题