【问题标题】:Changing Java API to make xxx.out.println to work the same way as system.out.println更改 Java API 以使 xxx.out.println 以与 system.out.println 相同的方式工作
【发布时间】:2011-11-26 03:05:20
【问题描述】:

我需要更改 java API 以使刺客信条.out.println 以与 system.out.println 相同的方式工作。

你能解释一下吗..?

【问题讨论】:

    标签: java jakarta-ee customization


    【解决方案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 类命名约定!)

    【讨论】:

      【解决方案2】:

      将assasscreed.out 指定为与​​System.out 相同的值。

      【讨论】:

        【解决方案3】:

        试试这个,

         BufferedWriter out = new BufferedWriter(new OutputStreamWriter(new
                        FileOutputStream(java.io.FileDescriptor.out), "ASCII"), 512);
         out.write("Hello World");
         out.flush();
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多