public class MyClass<T> {
private Map<Class<?>, Object> member;
public <E> void putEnumSet(Class<E> enumSetType, E enumSet) {
this.member.put(enumSetType, enumSetType.cast(enumSet));
}
public <E> E getEnumSet(Class<E> enumType) {
return enumType.cast(this.member.get(enumType));
}
};
public enum Category {
// ...
};
member
inMyClass
用于存储几种不同Enum 类型的EnumSet。在实现相关方法时,我遇到了一些问题:当我尝试这样调用方法时:
public static void main(String[] args) {
EnumSet<Category> set = EnumSet.noneOf(Category.class);
MyClass<Word> newClass = new MyClass<Word>();
newClass.putEnumSet(set.getClass(), set);
}
错误来了:
putEnumSet(Class<E>, E)
类型中的方法MyClass<Word>
不适用于参数(Class<capture#1-of ? extends EnumSet>, EnumSet<Category>)
如何处理这个问题?我认为它可能来自raw type或type erasure,但我不知道主要原因。谢谢。