在enumSet中存储不同的枚举类型

问题描述 投票:0回答:1

我想在一个枚举中存储不同的枚举类型。

这是正确的(最短的)方式吗?

public enum MyEnums {
    all(EnumSet.of(Color.red, Shape.round));

    MyEnums(EnumSet<? extends Enum<?>> keys) {
        this.keys = keys;
    }

    private final Set<? extends Enum<?>> keys;

    public Set<? extends Enum<?>> getKeys() {
        return keys;
    }
}
java enums enumset
1个回答
4
投票

使用不同类型的集合。 EnumSet是designed to hold enum values of a single kind only

枚举集中的所有元素必须来自单个枚举类型

关键是它非常有效,因为它存储了当前序数值的位掩码 - 大多数枚举值少于64个值,所以它基本上需要的成员变量是Classlong。 (EnumSet的私有子类称为JumboEnumSet,它处理更大的枚举)。

如果您有多个枚举类型,则无法使用相同的序号区分不同枚举的值。

© www.soinside.com 2019 - 2024. All rights reserved.