我有一个类和函数定义如下:
public class Site {
public EnumSet<?> contents;
public void determineStates(Site a, Site b) {
this.contents.clear();
this.contents.addAll(a.contents);
this.contents.addAll(b.contents);
a.contents.removeAll(b.contents);
this.contents.removeAll(a.contents);
}
}
对于这两个addAll操作,Eclipse都给出了以下错误消息:
The method addAll(Collection<? extends capture#6-of ?>) in the type AbstractCollection<capture#6-of ?> is not applicable for the arguments (EnumSet<capture#7-of ?>)
基本上我需要某种形式的Enum
泛型,我对看似有限的东西感到沮丧。我有许多Enum
类型不兼容,但我希望有一些容器可以容纳任何类型。
我认识到在此代码中无法确定a
,b
和contents
是否都属于Enum
类型,但实际上实施这不应该是有问题的。
解决我的通用Enum
问题的任何想法和可能的方法都很有价值,我非常感谢你的帮助。提前谢谢。
答案 0 :(得分:4)
Site类应该是通用的:
public class Site<E extends Enum<E>> {
public EnumSet<E> contents;
public void determineStates(Site<E> a, Site<E> b) {
this.contents.clear();
this.contents.addAll(a.contents);
this.contents.addAll(b.contents);
a.contents.removeAll(b.contents);
this.contents.removeAll(a.contents);
}
}