我想编写一个接受EnumSet的方法,将Enum对象添加到集合中,然后输出我新修改的EnumSet。我不太清楚如何写这个方法的签名。经过一番浏览后,我将以下内容作为我的签名:
public <E extends Enum<E>> EnumSet<E> addIntervals(EnumSet<E> set)
但是,当我在我的方法中引用set时,我无法使用与该EnumSet相关联的方法。我正确接近这个吗?
enum Week {
SUN(0), MON(1), TUE(2), WED(3), THU(4), FRI(5), SAT(6)}
这是我的枚举集。例如,假设我们想要将一周中的奇数天添加到空的EnumSet中。
public <E extends Enum<E>> EnumSet<E> addIntervals(EnumSet<E> set) {
...
for (Week day : oddWeekDays) {
set.add(day);
set应该有类型EnumSet,我应该能够像Week.MON或Week.WED一样添加一周中的奇数天。但是,在IntelliJ中,它说“无法解析方法'添加'”。
由于
编辑:
所以,假设我有上面的周EnumSet,我有一个月EnumSet:
enum Month{
DAY_1(0), DAY_2(1) ... DAY_31(30)}
我可以编写一个通常可以接收其中任何一个EnumSets的函数吗?
答案 0 :(得分:1)
public <E extends Enum<E>> EnumSet<E> addIntervals(EnumSet<E> set) {
...
for (Week day : oddWeekDays) {
set.add(day);
此方法签名显示“我接受任意EnumSet
个实例”(因为E
扩展Enum
),但您尝试将具体Week
类型添加到组。例如,如果您将EnumSet<Day>
类型传递给addIntervals()
,您会发生什么?
如果您只想在设置中添加Week
个实例,只需让您的方法接受EnumSet<Week>
,然后摆脱E
泛型类型。
如果您确实打算接受任意EnumSet<E>
个实例,请在问题中添加有关您actually trying to do的详细信息。