:
简单的来说,这个思想就是
InputStream 拥有 read() 方法 , 但是你往往不是从 文件里面读取流数据的,可能需要从网络,缓存等等地方读取数据,当然你可以选择继承比如 FileInputStream 等类,但是这样一来,一个类就可能拥有几百个子类,造成一定的混乱,倒不如,你所有的类,都继承于 FilterInputStream
比如,我想给 FileInputStream 扩展方法,最好的不是继承 FileInputStream 类,而是如下所示:
import java.io.FileInputStream;import java.io.FilterInputStream;import java.io.IOException;import java.io.InputStream;public class FilterInputStreamTest {public static void main(String[] args) throws IOException{InputStream in = new ReadFile(new FileInputStream("test1.txt"));in.read();}}class ReadFile extends FilterInputStream{protected ReadFile(InputStream in) {super(in);}public int read() throws IOException {StringBuilder sb = new StringBuilder();int n;while((n = in.read()) != -1){sb.append((char)n);}System.out.println(sb.toString());return n;}}
