更好的方法来检查对象是否是Java中类的实例
检查对象是否是类的实例更好?更好的方法来检查对象是否是Java中类的实例
object instanceof class
或
object == class.instance
是它更好地使用第一选择,我需要导入类到另一个类检查的对象是类的实例,或者如果它等于检查到类中初始化的类的对象?
我目前正在使用instanceof
方法,但我不确定是否最好使用它或者其他解决方案。
obj instanceof MyClass
通常是优选的方式,除非它必须是的MyClass
一个MyClass
而不是一个子类,在这种情况下obj.getClass() == MyClass.class
是使用检查。
obj == class.instance
没有意义。 obj == new MyClass()
总是会返回false
,也没有意义。 obj == otherObj
是对象实例的身份检查,对于检查它们是否是同一个类是没有意义的,因为不相等的对象可能仍然是同一类。
谢谢explainig,通过“obj == class.instance”我的意思是class.instance是一个对象,它是该类的一个实例(该类中的一个对象已经在该类中定义) – Warix3
两个选项不一样。让我解释一下
第一个问题是检查给定实例'object'的类型是'class'(还是'class'的子类型)。例如
class A {}
class B extends A {}
Object b = new B();
if(b instanceof A){
//will be true
}
第二个选项甚至不是有效的。
使用'instanceof'是查找对象是否为特定类型的实例的首选方法。
你实际上并不想写字符串文字,对吧? –
我不明白第二个例子。你的意思是写一些像'object.getClass()== SomeClass.class'? – radoh
目前还不清楚第二起案件的实际含义。如果你想检查一个对象是否是*类的*实例,'object instanceof AClass'显然是做这件事的方法。 –