2

System.out.println()我正在搜索在控制台上打印参数值的java 源代码。我检查了PrintStreamFilterOutputStreamOutputStream,它们都没有完整的方法实现,也没有任何对本机代码的引用。

值如何System.out.println打印在控制台上,哪个本地方法正在执行实际工作?

4

2 回答 2

2

您必须深入了解装饰器模式包装器。在底部你会发现FileOutputStream,特别是这个方法:

private native void writeBytes(byte b[], int off, int len) throws IOException;

使用此代码来玩它:

public static void main(String[] args) throws Exception {
  nav(nav(System.out));
}

static Object nav(Object o) throws Exception {
  final Field[] fs = o.getClass().getSuperclass().getDeclaredFields();
  for (Field f : fs) {
    f.setAccessible(true);
    final Object r = f.get(o);
    System.out.println(r);
    return r;
  }
  return null;
}
于 2012-04-30T08:52:12.140 回答
0
public static final PrintStream out

“标准”输出流。此流已经打开并准备好接受输出数据。通常,此流对应于主机环境或用户指定的显示输出或另一个输出目的地。对于简单的独立 Java 应用程序,编写一行输出数据的典型方法是:

System.out.println(data)

在哪里:

void println(String x) 

打印一个字符串,然后终止该行。

于 2012-04-30T05:53:33.947 回答