gpt4 book ai didi

java - 使用类作为键插入哈希表的通用方法

转载 作者:行者123 更新时间:2023-12-02 06:32:55 24 4
gpt4 key购买 nike

我正在尝试创建一个方法,该方法接收扩展 Component 的对象并将其插入到使用对象类作为对象本身的键的映射中。由于某种原因,它提示看跌期权

components = new Array<ObjectMap<Class,? extends Component>>();

public <T extends Component> void putComponentOnEntity(Entity e, T component) {
if (entities.items[e.id] == null) {
throw new IllegalArgumentException("Entity does not exist anymore");
}
ObjectMap<Class, ? extends Component> entityComponents = components.get(e.id);
entityComponents.put(component.getClass(), component);
}

--

The method put(Class, capture#4-of ? extends Component) in the type ObjectMap<Class,capture#4-of ? extends Component> is not applicable for the arguments (Class<capture#5-of ? extends Component>, T)

最佳答案

你不能在 ObjectMap<Class, ? extends Component> 中放入任何东西(除了空)。 ,因为ObjectMap<Class, ? extends Component>Class 的 map 以及扩展组件的某种未知类型。所以它可能是 ObjectMap<Class, Label>ObjectMap<Class, Button> ,但我们不知道。

向此类 map 添加任何值很可能会添加不具有 map 值的实际类型的内容(例如,本地图是按钮 map 时,标签),因此编译器禁止它。

编译器必须知道 ? 后面隐藏的实际类型检查添加到 map 的内容是否与其类型兼容。这就是泛型类型类型安全的原因。

关于java - 使用类作为键插入哈希表的通用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19917119/

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