2016-02-29 82 views
0

检查对象是否是类的实例更好?更好的方法来检查对象是否是Java中类的实例

object instanceof class 

object == class.instance 

是它更好地使用第一选择,我需要导入类到另一个类检查的对象是类的实例,或者如果它等于检查到类中初始化的类的对象?

我目前正在使用instanceof方法,但我不确定是否最好使用它或者其他解决方案。

+0

你实际上并不想写字符串文字,对吧? –

+0

我不明白第二个例子。你的意思是写一些像'object.getClass()== SomeClass.class'? – radoh

+2

目前还不清楚第二起案件的实际含义。如果你想检查一个对象是否是*类的*实例,'object instanceof AClass'显然是做这件事的方法。 –

回答

3

obj instanceof MyClass通常是优选的方式,除非它必须MyClass一个MyClass而不是一个子类,在这种情况下obj.getClass() == MyClass.class是使用检查。

obj == class.instance没有意义。
obj == new MyClass()总是会返回false,也没有意义。
obj == otherObj是对象实例的身份检查,对于检查它们是否是同一个类是没有意义的,因为不相等的对象可能仍然是同一类。

+0

谢谢explainig,通过“obj == class.instance”我的意思是class.instance是一个对象,它是该类的一个实例(该类中的一个对象已经在该类中定义) – Warix3

0

两个选项不一样。让我解释一下

第一个问题是检查给定实例'object'的类型是'class'(还是'class'的子类型)。例如

class A {} 

class B extends A {} 

Object b = new B(); 

if(b instanceof A){ 
//will be true 
} 

第二个选项甚至不是有效的。

使用'instanceof'是查找对象是否为特定类型的实例的首选方法。