当初在制定Servlet规范时,让HttpServletRequest继承ServletRequest,可能准备有其他不同于Http的ServletRequest。
HttpServletRequest
ServletRequest
但Servlet规范发展到今天,似乎所有实现ServletRequest的类都会实现HttpServletRequest,所以这么写问题不是太大。
如果要严格一些,可以写成:
if (!(req instanceof HttpServletRequest) || !(resp instanceof HttpServletResponse)) { throw new SerlvetException(...); }
HttpServletRequest继承自ServletRequest 是子类与父类的关系。父类转子类原则:父类型的引用指向的是哪个子类的实例,就能转换成哪个子类的引用。这里的ServletRequest 本质上原来就是 HttpServletRequest,因为tomcat等web服务器中传来ServletRequest就是HttpServletRequest。实际上这是一个HttpServletRequest->ServletRequest->HttpServletRequest 的过程
儿子是继承了老爸的东西的。除了你老爸私有的。把老爸的东西强制给儿子,有毛病吗。滑稽
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
暂无简介
文章 0 评论 0
接受
发布评论
评论(3)
当初在制定Servlet规范时,让
HttpServletRequest
继承ServletRequest
,可能准备有其他不同于Http的ServletRequest
。但Servlet规范发展到今天,似乎所有实现
ServletRequest
的类都会实现HttpServletRequest
,所以这么写问题不是太大。如果要严格一些,可以写成:
HttpServletRequest继承自ServletRequest 是子类与父类的关系。
父类转子类原则:父类型的引用指向的是哪个子类的实例,就能转换成哪个子类的引用。
这里的ServletRequest 本质上原来就是 HttpServletRequest,因为tomcat等web服务器中传来ServletRequest就是HttpServletRequest。
实际上这是一个HttpServletRequest->ServletRequest->HttpServletRequest 的过程
儿子是继承了老爸的东西的。除了你老爸私有的。把老爸的东西强制给儿子,有毛病吗。滑稽