java中检查对象类型的不同方法?
我有一个objectobj和一个类名MyClass,我可以使用instanceof或者我可以说obj.getClass().equals(“MyClass”)来检查obj是否属于MyClass类型。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
因此,我想知道是否还有其他方法可以检查对象的类型。是另一个选项。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
没有相同的功能
另一方面,在代码中处理这个问题时,使用-模式是一个干净的(尽管不是代码行中最小的)解决方案。一个很好的优点是,一旦为一组类设置了访问者接口,就可以在需要处理类的所有/某些/一个不同扩展的所有其他地方再次重用它