0

我很难理解线路构造的语义

PrintWriter out = response.getWriter()

首先,我注意到 HTTPServletResponse 是一个接口,但没有 getWriter 方法。

那么怎么response.getWriter()可能呢?或者更好的是,接口变量如何调用方法?除此之外,PrintWriter 是否实现了 HTTPServletResponse?

我查看了 Java 实现,但似乎不是;那么它是如何分配的response.getWriter()

谢谢

4

2 回答 2

2

response.getWriter()返回 a 的实例PrintWriter

该方法getWriter()是在接口上定义的,该接口ServletResponse是 的父接口HttpServletResponse

您有一个HttpServletResponse实现该getWriter()方法的具体实现。

您应该查看 HttpServletResponse 的 javadoc。

于 2013-08-21T15:33:17.443 回答
1

PrintWriter 是否实现 HTTPServletResponse

HttpServletResponse,没有getWriter方法,但它是在ServletResponse超级接口中定义的,更具体地说在这里:ServletResponse#getWriter.

接口变量如何调用方法?

例如,在您doGet的 servlet 方法中,您会收到一个HttpServletResponse参数,该参数是应用程序服务器与实现此接口的类的实例一起发送的。请注意,类实现可能因供应商而异,即 Tomcat 中的类实现与 WebLogic 中的类实现不同。这样做是为了让您可以通过使用接口专注于主要工作,而不是为不同的应用程序服务器实现编写不同的逻辑。

与最后一点相关:

于 2013-08-21T15:32:54.873 回答