有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java在枚举集中存储不同的枚举类型

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

这是最短的路吗

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;
    }
}

共 (1) 个答案

  1. # 1 楼答案

    使用另一种设置。枚举集为designed to hold enum values of a single kind only

    All of the elements in an enum set must come from a single enum type

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

    如果有多个枚举类型,则无法区分具有相同序号的不同枚举中的值