超类转换为子类,应该用instanceof检查。即
if(超类instanceof子类)
{进行转换}
可是 超类instanceof子类 是不是都返回false啊?这样子不是不能进行转换了吗?
超类转换为子类,应该用instanceof检查。即
if(超类instanceof子类)
{进行转换}
可是 超类instanceof子类 是不是都返回false啊?这样子不是不能进行转换了吗?
你对instanceof
的理解有误,可以参考 捏造的信仰 的回答,类和实例的概念也有点混淆, a instanceof B 是为了弄清实例 a 到底是不是 B 类型,可以看下面向对象里头的『多态』概念
4 回答1.8k 阅读✓ 已解决
4 回答1.5k 阅读✓ 已解决
1 回答2.7k 阅读✓ 已解决
3 回答1.4k 阅读✓ 已解决
4 回答2.4k 阅读
2 回答847 阅读✓ 已解决
2 回答1.4k 阅读
这个比较不是类和类之间的比较,而是一个变量的声明类型和实际类型之间的比较。比如 A 是 B 的父类(或超类),某个变量 a 被声明为 A 类型,但它实际上可能是 B 类型。a instanceof B 就是为了弄清 a 到底是不是 B 类型。