java中检查对象类型的不同方法?

java中检查对象类型的不同方法?,java,object,Java,Object,我有一个objectobj和一个类名MyClass,我可以使用instanceof或者我可以说obj.getClass().equals(“MyClass”)来检查obj是否属于MyClass类型。 因此,我想知道是否还有其他方法可以检查对象的类型。是另一个选项。instanceof是另一个选项。请注意,您引用的两个选项并不等效: "foo" instanceof Comparable // returns true "foo".getClass().equals(Comparable.clas

我有一个objectobj和一个类名MyClass,我可以使用instanceof或者我可以说obj.getClass().equals(“MyClass”)来检查obj是否属于MyClass类型。
因此,我想知道是否还有其他方法可以检查对象的类型。

是另一个选项。

instanceof是另一个选项。

请注意,您引用的两个选项并不等效:

"foo" instanceof Comparable // returns true
"foo".getClass().equals(Comparable.class) // return false

注意:
instanceof
如果您的对象是
MyClass
的子类,或者如果它实现了接口,也会返回true(这通常是您感兴趣的-如果您回忆起“is a”OOP概念)


另请参见关于
类。isAssignableFrom()
,类似于
instanceof
,但功能更强。

instancef
不是合适的解决方案,因为它为类的子类提供了正确的解决方案。改用这个:

 obj.getClass().equals("MyClass")

您可能可以通过
obj.getClass().getSuperClass()
递归得到类似于
instanceof
的东西,正如其他人所说,
instanceof
equals
没有相同的功能

另一方面,在代码中处理这个问题时,使用-模式是一个干净的(尽管不是代码行中最小的)解决方案。一个很好的优点是,一旦为一组类设置了访问者接口,就可以在需要处理类的所有/某些/一个不同扩展的所有其他地方再次重用它