没有System.out怎么办,在控制台上打印?

KDj*_*ava 6 java io

我最近在接受采访时遇到了一个问题.问题表示为 - >假设您无法访问Jdk API中的System类,也无法使用ECHO,您在JRE 5环境中,如何在控制台上打印任何内容?问题真正开始于 - 为什么Java给了我们PrintStream对象System.out ??为什么它是最终的?没有任何其他方法可以在控制台上打印任何东西.

eis*_*eis 13

如果需要,可以绕过System对象.System.out做了很多额外的事情(例如处理unicode),所以如果你真的只想要原始输出和性能,你实际上甚至可能绕过它.

import java.io.*;

public class PrintOutTest {
  public static void main(String args[]) throws IOException {
    BufferedWriter out = new BufferedWriter(new OutputStreamWriter(new
      FileOutputStream(FileDescriptor.out), "ASCII"), 512);
    out.write("test string");
    out.write('\n');
    out.flush();
  }
}
Run Code Online (Sandbox Code Playgroud)

这已经阐述远一点这里.

  • +1; 甚至不知道FileDescriptor保留对stdout,stderr,stdin的引用... (2认同)