需要根据两个对象实现的类来比较它们吗?何时比较使用getClass()
什么时候getClass().getName()
?
这种比较两个对象类类型(名称)的方法有什么区别吗?
public abstract class Monster { ... }
public class MonsterTypeOne extends Monster { ... }
public class MonsterTypeTwo extends Monster { ... }
Monster monster = MonsterTypeOne();
Monster nextMonster = MonsterTypeTwo();
if(nextMonster.getClass().getName().equals(monster.getClass().getName()) )// #1
if(nextMonster.getClass().equals(monster.getClass()) )// #2
EDIT 1
关于什么: ?
nextMonster.getClass().equals(MonsterTypeOne.class)
Use class.equals()
:
if (nextMonster.getClass().equals(monster.getClass()))
或者,因为每个类都像一个单例 - 每个类加载器每个类只有一个实例,并且大多数 JVM 只有一个类加载器 - 您甚至可以使用身份比较:
if (nextMonster.getClass() == monster.getClass())
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)