我需要更改java API以使assassinscreed.out.println与system.out.println一样工作..
你能说清楚它吗?
答案 0 :(得分:1)
简单。
在班级assassinscreed
中,添加以下声明:
public static final PrintStream out = System.out;
实现等效的System.setOut()
方法很棘手。您可以使用反射来更新out
“常量”的值。但是,某些代码可能会看到引用的陈旧副本。我不认为JLS提供了一种缓解这种情况的方法......因为从JLS的角度来看,价值不应该改变。
因此,如果您需要动态更改out
的值,这不是正确的解决方案。事实上,我认为它根本不是正确的解决方案。最好把它写成:
private static PrintStream out = System.out;
public static PrintStream getOut() {
returns out;
}
...如果你需要,可以使用setter。
(在我看来,经典设计是一个很大的错误。它确实使得在JVM中实现轻量级应用程序变得更加困难。)
(并且不要使用“assassinscreed”作为类名。坚持标准的Java类命名约定!)
答案 1 :(得分:0)
将assassinscreed.out指定为与System.out相同的值。
答案 2 :(得分:0)
试试这个,
BufferedWriter out = new BufferedWriter(new OutputStreamWriter(new
FileOutputStream(java.io.FileDescriptor.out), "ASCII"), 512);
out.write("Hello World");
out.flush();