有没有办法向System.out添加一个名为printlnx的方法,该方法会在输出前加一个字符串?
所以,如果我打电话:
System.out.printlnx("This is a test");
它会用前缀(由我指定)打印出来:
-prefix-->This is a test
注意:我的目的是标记控制台程序的所有输出,使其输出与我之后运行的辅助控制台程序不同。
答案 0 :(得分:2)
没有。 System.out
实际上是PrintStream
类型的对象。您不能追溯性地将任意方法添加到特定对象。
但是你可以很容易地编写一个存在于你自己的命名空间中的文件:
public final class utils {
public static void printlnx(String str) {
System.out.println("-prefix-->" + str);
}
}
然后在其他地方:
...
utils.printlnx("This is a test");
答案 1 :(得分:0)
您无法向现有类添加方法。至少在没有重大努力的情况下,在这种情况下这将是毫无意义的。你有两个选择。一种是拥有自己的实用方法,如其他答案中所述。
其他选项是在现有System.out周围创建一个包装器PrintStream,为每一行添加前缀,并通过System.setOut()方法重新分配。你甚至可以把你自己的方法放在那里,但你必须施展:
((MyPrintStream)System.out).printlnx(...)
以下是我验证工作的完整示例:
public class Test {
public static void main(String argv[]) {
System.setOut(new MyPrintStream());
((MyPrintStream)System.out).printlnx("Hello");
}
private static class MyPrintStream extends PrintStream {
public MyPrintStream() {
super(System.out);
}
public void printlnx(String str) {
super.println("prefix: " + str);
}
}
}