我很难理解行构造的语义
PrintWriter out = response.getWriter()
首先,我注意到HTTPServletResponse是一个接口,但没有getWriter方法。
那么response.getWriter()
怎么可能呢?或者更好的是,接口变量如何调用方法?
除此之外,PrintWriter是否实现了HTTPServletResponse?
我查看了Java实现,它似乎并不是;那么如何分配response.getWriter()
?
由于
答案 0 :(得分:2)
response.getWriter()
会返回PrintWriter
的实例。
方法getWriter()
在接口ServletResponse
上定义,该接口是HttpServletResponse
的父接口。
您有HttpServletResponse
的具体实现,它实现了getWriter()
方法。
您应该查看HttpServletResponse的javadoc。
答案 1 :(得分:1)
PrintWriter是否实现了HTTPServletResponse
没有。 HttpServletResponse
没有getWriter
方法,但它在ServletResponse
超级界面中定义,更具体地说是ServletResponse#getWriter
。
接口变量如何调用方法?
例如,在servlet的doGet
方法中,您会收到一个HttpServletResponse
参数,应用程序服务器使用实现此接口的类实例发送该参数。请注意,类实现可能因供应商而异,即Tomcat中的类实现与WebLogic中的类实现不同。这样做是为了通过使用接口来专注于主要工作,而不是为不同的应用服务器实现编写不同的逻辑。
与最后一点相关: