背景资料:
我的问题
让我们说有人提供以下代码:
package cs.compile;
import java.util.Arrays;
public class Foo {
private static int[] nums = new int[] { 1, 2, 3, 4, 5 };
public static void main(String[] args) {
System.out.println(getWords() + " " + Arrays.toString(nums));
}
public static String getWords() { return "Hello World!!!"; }
}
当我通过反射执行main()时,它工作正常。但是我希望从执行中获得标准输出和标准错误结果,并将它们保存在变量中,以便我可以返回它们。
我不知道怎么做这个,因为我认为,一旦加载了类,它与我的应用程序的其余部分共享相同的标准输出和标准错误。或许有一些标准的处理方法吗?我不想将我的整个应用程序的输出流指向远离,但我不确定如何专门针对新类。
答案 0 :(得分:1)
由于你正在编译它,你可以更改代码......替换System.out
:)
或者您可以将全局System.out设置为自定义输出流,该输出流根据某些启发式方法重定向到不同的目标。也许有些线程本地标志?等