java - 从两种类型的 Enum 之一实例化 EnumSet

标签 java generics enums enumset

我声明了这两个枚举:

public enum EnumOne implements EnumInterface {
    SomethingHere,
    SomethingThere;
    public void someMethod () { }
}

public enum EnumTwo implements EnumInterface {
    SomethingOverYonder;
    public void someMethod () { }
}

从这里可以看出,它们都实现了这个接口(interface)。

public Interface EnumInterface {
     someMethod();
}

我在这里定义了一个类,它包含一个 EnumSet,它将从 Enum1 或 Enum2 中获取所有元素。这将通过一个以索引作为参数的方法来定义。像这样:

public class SomeClass {
    private EnumSet someEnum;
    public void setEnumType (int index) {
        switch (index) {
        case 1:
            someEnum = EnumSet.allOf(EnumOne.class);
            break;
        case 2:
            someEnum = EnumTwo.allOf(EnumTwo.class);
            break;
        }
    }
}

现在,我知道我必须使用泛型以某种方式完成此操作,但我不知道该怎么做,因为我对它不够熟悉,我希望你能给我一些启发。

预先感谢您的回答。

最佳答案

目前还不清楚您在寻找什么,但如果您只是希望 someEnum 不使用原始类型声明,则此方法可行:

public class SomeClass {
    private EnumSet<? extends EnumInterface> someEnum;
    public void setEnumType (int index) {
        switch (index) {
        case 1:
            someEnum = EnumSet.allOf(EnumOne.class);
            break;
        case 2:
            someEnum = EnumSet.allOf(EnumTwo.class);
            break;
        }
    }
}

关于java - 从两种类型的 Enum 之一实例化 EnumSet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39864455/

相关文章:

java - 有什么方法可以获取最新的聚合数据,而不会成为 Firebase 列表中的最后一个?

java - Apache POI - 单元格的间歇颜色

java - 需要实现两个接口(interface)的泛型

java - 堆栈不断推送 null 而不是 String 值 Java

java - 按字段对一组元素进行排序

c - 枚举存储在哪里?

java - Java 中的静态初始化器和静态方法

java - Java 中的实际内存开销是多少?

c# - 通用类和 Type.GetType()

vb.net - 为枚举值添加前缀有什么好处吗?