今天看见JspContext的实例对象可以强转为PageContext对象的实例对象,
可是PageContext是JspContext的直接子类,这怎么可以强转。我好奇的验证了这段代码:jspContext instanceof PageContext 和PageContext pageContext =
(PageContext) jspContext, (其中jspContext是JspContext的实例对象),我这么写了后编译都出现错误,为什么别人的代码就可以正常的执行啊,求解。
你看以前使用容器的时候放入的对象类型比如是Integer,那么取出来就是这个Object了
使用强转可以没事,为什么呢?
那是因为父类对象如果引用过子类的对象就可以把父类对象强转为子类
但是如果二者没有引用关系,那么强转就会报错 java.lang.ClassCastException
所以 JspContext 对象如果有如下的命令存在的话是可以的
JspContext jsp = pageContext
这个引用存在前提下转是可以的
没有血缘关系转换是不可以的,记住这个就可以了
你可以编写2各类有继承关系实验下就知道了
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。