【发布时间】:2011-11-26 03:05:20
【问题描述】:
我需要更改 java API 以使刺客信条.out.println 以与 system.out.println 相同的方式工作。
你能解释一下吗..?
【问题讨论】:
标签: java jakarta-ee customization
我需要更改 java API 以使刺客信条.out.println 以与 system.out.println 相同的方式工作。
你能解释一下吗..?
【问题讨论】:
标签: java jakarta-ee customization
简单。
在 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 类命名约定!)
【讨论】:
将assasscreed.out 指定为与System.out 相同的值。
【讨论】:
试试这个,
BufferedWriter out = new BufferedWriter(new OutputStreamWriter(new
FileOutputStream(java.io.FileDescriptor.out), "ASCII"), 512);
out.write("Hello World");
out.flush();
【讨论】: