当前位置: 代码迷 >> Java Web开发 >> write(byte[] b)调用的是否write(int b )方法呢
  详细解决方案

write(byte[] b)调用的是否write(int b )方法呢

热度:900   发布时间:2016-04-16 22:17:29.0
write(byte[] b)调用的是不是write(int b )方法呢?
本帖最后由 u013893301 于 2014-05-31 12:03:12 编辑
在学习Filter,在对response对象增强时需要复写getOutStrean()方法

为此,我自己写了一个类继续了ServletOutStrean对象,并实现了write(int b)方法

class MyServletOutStream extends ServletOutputStream{
private ByteArrayOutputStream byOut;
public MyServletOutStream(ByteArrayOutputStream byOut)
{
this.byOut = byOut;
}
@Override
public void write(int b) throws IOException {
// TODO Auto-generated method stub
System.out.println("这是int b");
this.byOut.write(b);
}

}



不明白的是,我在Servlet获取到这个对象时,我调用的是write(byte[] b )方法,但是发现执行的却是我的write(int b )方法

为什么write(byte[] b)调用的是write(int b )呢?他是怎么实现的?

基础学得不好,想不明白0.0还请指教下


是不是write(bye[] b)是写出一个字节数组,但是底层调用write(int b )一个字节一个字节的写出呢?
可是我去查看java的源代码却发现他的write(int b )和write(byte[] b)都是由不同的实现的。。。。。。。。。
------解决方案--------------------
ServletOutputStream是没有实现write方法的,其父类OutputStream才实现了write(byte[]),而他的实现方法是依次调用write(byte),所以才会调用你那个方法
------解决方案--------------------
ByteArrayOutputStream   明不明白。
  相关解决方案