2012-04-30 3 views
2

System.out.println()パラメータ値をコンソールに表示するjavaソースコードを検索していました。私はPrintStreamFilterOutputStreamOutputStreamのクラスをチェックしましたが、それらのメソッドのどれも完全な実装方法もネイティブコードへの参照もありませんでした。System.out.println( 'teststring')はどのようにコンソールに値を出力しますか?どのネイティブメソッドが実際の仕事をしていますか?

System.out.printlnの値はコンソールに印刷されますが、実際の方法は実際のジョブを実行していますか?

答えて

0
public static final PrintStream out 

"標準"出力ストリーム。このストリームは既に開いており、出力データを受け入れる準備ができています。通常、このストリームは、ホスト環境またはユーザーによって指定されたディスプレイ出力または別の出力先に対応します。単純なスタンドアロンのJavaアプリケーション 、出力データのラインを書くための一般的な方法は次のとおりです。

void println(String x) 

がStringを出力し、行を終了さ:

System.out.println(data) 

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; 
} 
+0

、返信に感謝を。私はjvmがJNIを使​​ってネイティブコードにネイティブのJavaコールをリンクしていると思います。しかし、私はまだ正確にjvmがDLLファイルをロードしているのでしょうか? DLLファイルからネイティブメソッドを抽出できますか? –

関連する問題