【发布时间】:2013-01-10 19:14:30
【问题描述】:
我有一个类和函数定义如下:
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 问题的任何想法和可能的方法都将很有价值,我将非常感谢您的帮助。提前致谢。
【问题讨论】:
-
如果 a b 和 c 是相同的 Enum 类型,那么 Site 应该有自己的泛型参数。如果没有,这不能用 EnumSets 来完成。
-
@LouisWasserman 在实现中,是的,所有变量都将具有相同的 Enum 类型。您介意解释一下如何为站点创建通用参数吗?
标签: java generics enums enumset