包装BufferedReader的readLine()输出行号
定义一个类,实现与被增强对象相同的接口,或继承这个类,视情况而定 定义一个变量,记住被增强的对象 定义一个构造函数,接收被增强的对象 覆盖要增强的方法 对于不需要增强的方法,调用被增强对象原有的方法
包装加强类
package com.henau.baozhuang; import java.io.BufferedReader; import java.io.IOException; public class MyBufferedReader extends BufferedReader { private BufferedReader br; public int numline=1; public MyBufferedReader(BufferedReader br){ super(br); this.br=br; } @Override public String readLine() throws IOException { String value=br.readLine(); if(value==null){ return br.readLine(); } return numline+++value; } }
接收原来的方法而不直接操作,是因为要找到文本结束时的null,否则前面加上行号就永远不可能是null,就会进入死循环
测试类
package com.henau.baozhuang; import java.io.BufferedReader; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; public class MyBufferedReaderTest { public static void main(String[] args) throws IOException { BufferedReader br=new BufferedReader(new FileReader("1.txt")); MyBufferedReader mbr=new MyBufferedReader(br); String date; while((date=mbr.readLine())!=null){ System.out.println(date); } } }
运行结果:
1定义一个类,实现与被增强对象相同的接口,或继承这个类,视情况而定 2定义一个变量,记住被增强的对象 3定义一个构造函数,接收被增强的对象 4覆盖要增强的方法 5对于不需要增强的方法,调用被增强对象原有的方法