一、应用场景:原本有不能一起工作的两个类,现在将其中的一个类通过适配器类包装起来给另一个类用。
二、示例:

package cn.edu.tju.app;

import java.io.*;

public class AdapterTest {
public static void main(String[] args) throws Exception{
InputStream inputStream=new FileInputStream("c:\\00\\00.txt");
InputStreamReader inputStreamReader=new InputStreamReader(inputStream);
BufferedReader bufferedReader=new BufferedReader(inputStreamReader);
while(true){
String lineText=bufferedReader.readLine();
if(lineText!=null){
System.out.println(lineText);
}
else{
break;
}
}
}
}

原有两个类:BufferedReader和InputStream,其中BufferedReader类的构造方法无法接收InputStream类型的参数,所以,通过InputStreamReader这个适配器类对InputStream进行包装,就可以给BufferedReader这个类使用了。

构造BufferedReader时调用的构造方法的源码如下:

/**
* Creates a buffering character-input stream that uses a default-sized
* input buffer.
*
* @param in A Reader
*/
public BufferedReader(Reader in) {
this(in, defaultCharBufferSize);
}