instanceof 和 Class.isAssignableFrom(...) 之间有什么区别?
2022-08-31 04:25:04
以下哪项更好?
a instanceof B
或
B.class.isAssignableFrom(a.getClass())
我所知道的唯一区别是,当“a”为null时,第一个返回false,而第二个则引发异常。除此之外,它们总是给出相同的结果吗?
以下哪项更好?
a instanceof B
或
B.class.isAssignableFrom(a.getClass())
我所知道的唯一区别是,当“a”为null时,第一个返回false,而第二个则引发异常。除此之外,它们总是给出相同的结果吗?
使用 时,您需要知道 编译时 的类。使用时,它可以是动态的,并在运行时更改。instanceof
B
isAssignableFrom()
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)。