我将两个枚举声明为:
public enum EnumOne implements EnumInterface {
SomethingHere,
SomethingThere;
public void someMethod () { }
}
public enum EnumTwo implements EnumInterface {
SomethingOverYonder;
public void someMethod () { }
}
如此处所示,它们都实现了此接口。
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;
}
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句