Java instanceof false 如果有父

标签 java instanceof parents

我正在创建某种成就系统,我有一个 KillXEnemies 类,然后我从它继承了 KillXEnemiesWeapon 类(用某种武器杀死的敌人)。当你杀死一个敌人时,我循环遍历成就对象并添加一个敌人已经被杀死:

if(object instanceof KillXEnemies)
    ((KillXEnemies)object).addEnemyKilled();

但是 KillXEnemiesWeapon 也会被跟踪,因为它继承自 KillXEnemies。我知道一种解决方案是:

if(object instanceof KillXEnemies && !(object instanceof KillXEnemiesWeapon))
    ((KillXEnemies)object).addEnemyKilled();

但是我即将获得很多继承自 KillXEnemies 的类,拥有 20 个这样的类似乎是一个糟糕的解决方案!(object instanceof (---))

所以我想知道是否有更简单的方法来检查对象是否只是 KillXEnemies 而不是 KillXEnemiesWeapon

最佳答案

您可以使用 Object#getClass获取对象的实际类,然后将其与 KillXEnemies.class 进行比较。

if (object.getClass().equals(KillXEnemies.class))

true object 是一个 KillXEnemies 但如果 object 是一个子类的实例则不是

但我想知道(并且认识到您有比我更多的很多信息,所以我很容易出错)类和子类是否是对这些信息建模的最佳方式。 ..

关于Java instanceof false 如果有父,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15428099/

相关文章:

java - 如何调用列表中某些对象实现的特定接口(interface)? java

javascript - 在Sinon.js和instanceof中模拟类

java - 如何使用 List<WebElement> webdriver

javascript - 如何使用第三个子类获取父级 div 值?

java - 将许多语句加载到 Jena 数据集中的最有效方法是什么?

java - 咖啡因缓存 "cannot be cast to org.springframework.cache.Cache"

java - 确定父类对象的子类类型

jQuery Closest()、Parents() 和 Parent() 影响同一 DOM 级别的多个元素

java - Android camera : Threads? 哪个应该做什么

java - 如何将jar文件添加到jar文件中?