java - java.util.EnumSet<E> 是如何工作的?

标签 java inheritance collections enums

EnumSet<E>类定义为:

public abstract class EnumSet<E extends Enum<E>>
extends AbstractSet<E>
implements Cloneable, Serializable

在 JCF 中。 此外,类本身实现的大多数方法都是静态的。最后,该类似乎没有实现 add() , iterator() , remove() , size() , contains()isEmpty()方法,只是从不实现它们的 AbstractSet 继承它们。 我有两个问题:

  1. 究竟如何EnumSet对象被实例化和使用?
  2. 为什么我可以使用 add() EnumSet 的方法对象?

最佳答案

你看到的大多数静态方法都是工厂方法(of()complementOf()allOf() 等)。

这些方法返回一个 EnumSet 的实例。这些方法创建和返回的 EnumSet 的实际类型是 EnumSet 的子类(RegularEnumSetJumboEnumSet),它们不是公共(public) API 的一部分,但实现了所有所需的方法。您只需要知道它们实现了 EnumSet。

关于java - java.util.EnumSet<E> 是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32113173/

相关文章:

c++ - 构造函数的继承错误调用

java - 绑定(bind) map 时调用自定义构造函数

java - 当 b 很大时 Allure @Step(String s, byte[] b) (2.12.1 allure)

JavaFx setText 将字段设置为 int

java - Hibernate @SqlInsert 注释从 bean 中获取空值而不是值

Java 泛型和 jOOQ - 如何创建一个 jOOQ 列到另一列的 HashMap

C++ 继承 : Calling Base Class Constructor In Header

list - 在满足谓词的每个元素处拆分列表(Scala)

ios - Swift:将 oldArray[][] 复制到 newArray[][] 会导致错误(类型 'Any' 没有下标成员)

java自定义注解: make an attribute optional