为什么instanceof跨类后就不报编译错误了呢?
1、A instanceof B,用于判断A是否是B类型的实例。其中A、B之间必须是有继承或实现关系。Integer与String不满足条件,所以报错。
2、任何类型都是Object类型的子类,因此Object的引用可以指向任何实例。由于继承/实现是运行时多态,在编译期没法告诉你Object所引用的实例是否是String类型的实例,因此编译期不报错。
3、运行时,instanceof会根据实际类型进行判断,返回true或false。
4 回答1.6k 阅读✓ 已解决
4 回答1.3k 阅读✓ 已解决
1 回答2.6k 阅读✓ 已解决
3 回答2k 阅读
2 回答785 阅读✓ 已解决
2 回答1.7k 阅读
2 回答1.3k 阅读
anObject
是 Integer 对象的时候,anObject instanceof String
得到false
,不会报错。然后跳过
if
分支,直接return false
。instanceof
用来动态判断类型是否匹配,返回true
或false
,不会抛异常。