zoukankan      html  css  js  c++  java
  • 包装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对于不需要增强的方法,调用被增强对象原有的方法
    
  • 相关阅读:
    UVA
    题目1008:最短路径问题
    怎样使用安卓变声电话软件实现边变声边通话
    Map接口及其子类
    oracle slient静默安装并配置数据库及仅安装数据库不配置数据库shell
    oracle db_unnqiue_name db_name sid_name instance_name service_name
    oracle 配置监听
    oralce dubugs
    sqlplus conn远程连接
    centos 修改shm
  • 原文地址:https://www.cnblogs.com/lzzhuany/p/4968619.html
Copyright © 2011-2022 走看看