以下哪个更好?
a instanceof B
或者
B.class.isAssignableFrom(a.getClass())
我知道的唯一区别是,当“a”为空时,第一个返回 false,而第二个抛出异常。除此之外,他们总是给出相同的结果吗?
原文由 Megamug 发布,翻译遵循 CC BY-SA 4.0 许可协议
以下哪个更好?
a instanceof B
或者
B.class.isAssignableFrom(a.getClass())
我知道的唯一区别是,当“a”为空时,第一个返回 false,而第二个抛出异常。除此之外,他们总是给出相同的结果吗?
原文由 Megamug 发布,翻译遵循 CC BY-SA 4.0 许可协议
instanceof
只能用于引用类型,不能用于原始类型。 isAssignableFrom()
可以与任何类对象一起使用:
a instanceof int // syntax error
3 instanceof Foo // syntax error
int.class.isAssignableFrom(int.class) // true
请参阅 http://java.sun.com/javase/6/docs/api/java/lang/Class.html#isAssignableFrom(java.lang.Class) 。
原文由 Adam Rosenfield 发布,翻译遵循 CC BY-SA 2.5 许可协议
15 回答8.4k 阅读
8 回答6.2k 阅读
1 回答4k 阅读✓ 已解决
3 回答6k 阅读
3 回答2.2k 阅读✓ 已解决
2 回答3.1k 阅读
2 回答3.8k 阅读
使用
instanceof
时,需要在编译时知道B
的类。当使用isAssignableFrom()
它可以是动态的并且在运行时改变。