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

标签 java class reflection instanceof

在我的 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/

相关文章:

c# - 对象在转换为接口(interface)时必须实现 IConvertible (InvalidCastException)

java - 当我可以直接使用类名访问唯一的静态方法时,创建 Spring bean 是否有利

java - Jersey 2.0 : Equivalent to EntityHolder<T>

java - 将自定义设置添加到 PreferenceFragment

python - 类方法作为模型函数和类方法作为 scipy.optimize 的优化函数

php - ZipArchive php 类 - 它是 PHP 内置的吗?

Python 反射和可调用对象

java - HTTP请求返回非法状态异常android

c++ - 嵌套在模板类中的模板类在 MSVC++ 中给出错误

c# - String.IndexOf 方法的表达式树