gpt4 book ai didi

java - Java中操作Map, Object>时出现的问题

转载 作者:行者123 更新时间:2023-12-02 05:07:18 24 4
gpt4 key购买 nike

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 {
// ...
};

memberMyClass用于存储多种不同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);

}

这里出现错误:

The method putEnumSet(Class<E>, E) in the type MyClass<Word> is not applicable for the arguments (Class<capture#1-of ? extends EnumSet>, EnumSet<Category>)

如何处理这个问题?我认为它可能来自原始类型类型删除,但我不知道主要原因。谢谢。

最佳答案

How to deal with this problem?

E extends EnumSet<E>

这非常令人困惑,因为它说你必须有一个元素 E必须扩展 EnumSet<E>也就是说,您需要一个元素类型,它本身就是 EnumSetE

<小时/>

您遇到一个问题,即所有 EnumSet 类在运行时都是相同的。 IE。只有一个 EnumSet.class。您最好记录元素的类。

public class MyClass {

private Map<Class, Set> member;

public <E> void putEnumSet(Class<E> elementType, Set<E> enumSet) {
this.member.put(elementType, enumSet);
}

public <E> Set<E> getEnumSet(Class<E> elementType) {
return (Set<E>) this.member.get(elementType));
}
};

关于java - Java中操作Map<Class<?>, Object>时出现的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27675335/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com