更改Java API以使xxx.out.println的工作方式与system.out.println相同

时间:2011-11-26 03:05:20

标签: java java-ee customization

我需要更改java API以使assassinscreed.out.println与system.out.println一样工作..

你能说清楚它吗?

3 个答案:

答案 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();