捕获屏幕以Java格式打印

Ami*_*hum 6 java

我正在使用的一个类有一个display()功能,可以将一些信息输出到屏幕上.我不被允许改变它.有没有办法从外部"捕获"它打印到屏幕上的字符串?

它显示在控制台上.

aio*_*obe 5

我能想出的最接近的事情就是抓住并转发所有印刷品System.out.

看看这个setOut(java.io.PrintStream)方法.

一个完整的例子是:

import java.io.PrintStream;

public class Test {

    public static void display() {
        System.out.println("Displaying!");
    }

    public static void main(String... args) throws Exception {
        final List<String> outputLog = new ArrayList<String>();
        System.setOut(new PrintStream(System.out) {
            public void println(String x) {
                super.println(x);
                outputLog.add(x);
            }

            // to "log" printf calls:
            public PrintStream printf(String format, Object... args) { 
                outputLog.add(String.format(format, args));
                return this;
            }
        });

        display();
    }
}
Run Code Online (Sandbox Code Playgroud)