java - System.out.println ('teststring' ) 如何在控制台上打印该值?哪个 native 方法正在执行实际工作?

标签 java

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

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

最佳答案

您必须深入了解装饰器模式包装器。在底部你会发现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;
}

关于java - System.out.println ('teststring' ) 如何在控制台上打印该值?哪个 native 方法正在执行实际工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10378921/

相关文章:

java - 使用反射设置属性的属性

java - Docx4j 类未找到错误

java - Java 中奇怪的 printf() 行为

java - 在从托管 bean 加载页面期间设置 jsf InputSecret 的值

java - 带有可绘制对象的 ListView 的缓慢滚动性能

java - 创建自己的POS Tagger

java - 后台服务在 onCreate() 和 onResume() 中随机停止在 android 中工作

java - 使用 Eclipse 从类和图像创建可执行 JAR

java - 如何在特定时间后关闭 ProgressDialog

javascript - Javafx WebEngine 读取安全 cookie