问题描述
请教一下大家,servlet中的service()方法,一般会传入2个参数:ServletRequest request 和ServletResponse response 。ServletRequest和ServletResponse是2个接口,接口是不能实例化的,那么为什么可以定义他们的对象 request和response 呢?
解决方案
意思就是sevlet api可以传入任何实现ServletRequest,ServletResponse的类,这叫做多态,如:Object obj = new String();ServletRequest sr = new HttpServletRequest();
解决方案二:
HttpServletRequest req = (HttpServletRequest)request;
解决方案三:
换个角度想, 如果你的参数是HttpServletRequest 和response, 那么你的参数就定死了, 就是这两个, 如果你想要扩展它, 岂不是很麻烦了 ? 或者说,你想传进来的不是Httpservletrequest, 而是servletrequest的另一个实现,岂不是不能满足你了? 这种比较底层的东西, 一般都会写的扩展性比较强, 这样更通用.
解决方案四:
面向接口编程的思想吧 但是实际的参数应该是实现这两个接口的实现类实例
解决方案五:
子类现实或者继承,多态的考虑
时间: 2024-08-30 17:17:07