想请问一下在java中构造方法中初始化的对象和在方法中初始化的对象有什么区别
本来打算重写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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
Dog d = new Dog(5,"xiaobai");
Dog w = new Dog();
w.setAge(5);
w.setName("xiaobai");
你是想问d 和w有啥不同吗?