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对于不需要增强的方法,调用被增强对象原有的方法
    
  • 相关阅读:
    理解Linux虚拟文件系统VFS
    Linux进程间通信(IPC)
    为 区域添加 Tag
    html 模板 swig 预编译插件 grunt-swig-precompile
    如何开发 Grunt 插件
    Web开发常见的漏洞
    CSS实现不固定宽度和高度的自动居中
    Sublime Text 前端插件推荐
    JavaScript 防止事件冒泡
    HTML标签篇
  • 原文地址:https://www.cnblogs.com/lzzhuany/p/4968619.html
Copyright © 2011-2022 走看看