gpt4 book ai didi

Java - Class.isInstance() 总是返回 false

转载 作者:搜寻专家 更新时间:2023-10-31 08:22:33 28 4
gpt4 key购买 nike

在我的 GameObject 类中,我有以下方法来检查 GameObject 是否会在移动到指定位置时与另一个对象发生碰撞:

public boolean collisionAt(Vector2d position, Class<? extends GameObject>... exclusions) {
if (getBounds() == null)
return false;
Rectangle newBounds = getBounds().clone();
newBounds.setPosition(position);
// Check collisions
for (GameObject object : new ArrayList<>(gameObjects)) {
if (object.getBounds() != null && newBounds.intersects(object.getBounds()) && object != this) {
boolean b = true;
for (Class<? extends GameObject> exclusion : exclusions) {
if (object.getClass().isInstance(exclusion))
b = false;
}
if (b)
return true;
}
}
return false;
}

我想让程序定义排除项,例如,如果我不希望此方法在与 Spell 发生冲突时返回 true。但出于某种原因,Class.isInstance() 行总是返回 false。我什至试过这个:

System.out.println(Spell.class.isInstance(Spell.class));

控制台输出false!这是怎么回事?

最佳答案

isInstance 测试给定对象是否是 Class 的实例,而不是给定 Class 是否是 的子类>类

你的调用倒退了。您需要测试 gameObject 是否是排除类之一的实例。

if (exclusion.isInstance(gameObject))

关于Java - Class.isInstance() 总是返回 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31083699/

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