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

时间:2010-04-30 13:31:32

标签: java object

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

7 个答案:

答案 0 :(得分:2)

请注意,您引用的两个选项是不等于

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

答案 1 :(得分:2)

注意:instanceof如果您的对象是MyClass的子类,或者如果它实现了接口,则返回true(这通常是您感兴趣的 - 如果您记得“IS A” OOP概念)

另请参阅this关于Class.isAssignableFrom(),类似于instanceof,但更强大。

答案 2 :(得分:1)

答案 3 :(得分:0)

instanceof是另一种选择。

答案 4 :(得分:0)

instancef不是正确的解决方案,因为它给出了类的子类。请改用:

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

答案 5 :(得分:0)

您可以通过obj.getClass().getSuperClass()递归以获得与instanceof类似的内容。

答案 6 :(得分:0)

正如其他人所说,instanceofequals的功能不同。

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