想请问一下在java中构造方法中初始化的对象和在方法中初始化的对象有什么区别

发布于 2022-01-04 10:01:00 字数 2235 浏览 27 评论 1

本来打算重写HttpServletResponse中的getWriter方法,让其输出流指向一个自定义的路径而不是输出到浏览器,但是以如下第一种方式得到的PrintWriter,并没有被JSP调用,而第二中方式得到的PrintWriter却可以被JSP调用,或许是跟把PrintWriter定义在方法中还是在类中的有关联

 

第一种得到PrintWriter的方式

public class BaseHttpServletResponse extends HttpServletResponseWrapper {

    private HttpServletResponse resp;

    private String filePath;

    public BaseHttpServletResponse(HttpServletResponse response, String filePath) {

    super(response);

    this.resp = response;

    this.filePath = filePath;

    try {

    } catch (Exception e) {

    throw new RuntimeException();

}

}

 

public PrintWriter getWriter() throws IOException {

PrintWriter pw = new PrintWriter(filePath, "UTF-8");

return pw;

}

}

 

第二种得到PrintWriter的方式

public class BaseHttpServletResponse extends HttpServletResponseWrapper {

    private HttpServletResponse resp;

    private PrintWriter pw;

    public BaseHttpServletResponse(HttpServletResponse response, String filePath) {

    super(response);

    this.resp = response;

    try {

    pw = new PrintWriter(filePath, "UTF-8");

    } catch (Exception e) {

    throw new RuntimeException();

}

}

 

public PrintWriter getWriter() throws IOException {

    return pw;

}

}

以下是得到PrintWriter对象的代码段

BaseHttpServletResponse br = new BaseHttpServletResponse(resp, file.getAbsolutePath());
 PrintWriter pw = br.getWriter();(实际上源代码上并没有这一句代码,这个getWriter方法应该是又Tomcat调用的,而且做过测试,这个getWriter方法确实被Tomcat调用了)

请问大侠们,这两种方式得到PrintWriter对象能实现的功能是一样的吗,在内存分布上又有什么区别,小弟一直搞不清楚,感觉明明是一样的,为什么能实现的功能却不一样

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

千纸鹤带着心事 2022-01-05 10:30:07

Dog d = new Dog(5,"xiaobai");

Dog w = new Dog();

w.setAge(5);

w.setName("xiaobai");

你是想问d 和w有啥不同吗?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文