ServletRequest和HttpServletRequest为什么可以强制转换

ServletRequest和HttpServletRequest为什么可以强制转换_第1张图片

ServletRequest强制转换为HttpServletRequest为什么没报错呢?

先看一下普通转换

1.父类对象强转成子类 出错ClassCastException
Father f = new Father();
Son s = (Son)f;

2.父类引用子类对象强转成子类 可以
Father f = new Son();
Son s = (Son)f;//可以

3.子类强制转父类 可以
Son s = new Son();
Father f = (Father)s;

由上面可以看出如果ServletRequest要强制转换为HttpServletRequest必须要ServletRequest是new HttpServletRequest()。经过一番查询,在Tomcat里,确实是new HttpServletRequest() 所以没有报错。

你可能感兴趣的:(java,servlet,开发语言)