gpt4 book ai didi

java - 类类型与继承的比较

转载 作者:行者123 更新时间:2023-11-30 09:13:54 24 4
gpt4 key购买 nike

对于我的项目,我有一个带有 Class<?> 的 HashMap作为键和 MyClass作为值(value)。

Map<Class<?>, MyClass> map = new HashMap<Class<?>, MyClass>();

例如,我输入了一些值:

map.put(EntityDamageEvent.getClass(), new MyClass());

这是这个键的继承树:

class EntityDamageByEntityEvent extends EntityDamageEvent
class EntityDamageEvent extends EntityEvent
class EntityEvent extends Event

当我尝试从映射中获取值时出现问题,但键恰好是我实际尝试使用的键的子类:

void doSomething() {
EntityDamageByEntityEvent event = new EntityDamageByEntityEvent();

post(event); //This returns null
}

MyClass post(Event event) {
return map.get(event.getClass());
}

Object.getclass()给我子类,而不是我想要的类。

我该如何解决这个问题?谢谢

最佳答案

遍历子类祖先,直到找到映射中的某个人。

for (Class<T> klass = event.getClass(); klass!=null; klass=klass.getSuperclass()) {
MyClass c = map.get(klass);
if (c!=null) return c;
}
return null;

关于java - 类类型与继承的比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20776586/

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