我正在使用的一个类具有display()
功能,可以向屏幕输出一些信息。我不被允许改变它。有没有办法从外部“捕获”它打印到屏幕上的字符串?
显示到控制台。
答案 0 :(得分: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();
}
}
答案 1 :(得分:2)
我不熟悉Java中的标准display()操作,这可能是您正在使用的框架所特有的。它打印到控制台?显示一个消息框?
如果您正在讨论通过System.out.println()
和System.err.println()
进入控制台的打印输出,那么是。您可以重定向标准输入和标准输出。
使用:
System.setErr(debugStream);
System.setOut(debugStream);
并创建适当的流(例如,文件)。