Saya menggunakan refleksi seperti itu untuk mencetak properti objek System.out:

System.out.println("Class: " + System.out.getClass().getName());
for (Field field : ObjectUtils.getAllFields(System.out)) {
    field.setAccessible(true);
    System.out.println("> " + field.getType().getSimpleName() + ' ' + field.getName() + " = " + field.get(System.out));
}

Ini adalah hasilnya:

Class: java.io.PrintStream
> boolean autoFlush = false
> boolean trouble = false
> Formatter formatter = null
> BufferedWriter textOut = java.io.BufferedWriter@43c1b556
> OutputStreamWriter charOut = java.io.OutputStreamWriter@587e5365
> boolean closing = false
> OutputStream out = org.apache.tools.ant.util.TeeOutputStream@22fcf7ab

Seperti yang Anda lihat, autoflush disetel ke false. Jadi pertanyaan saya sederhana -- bagaimana cara mengkonfigurasi System.out agar autoflush disetel ke true?

1
Dasmowenator 29 Januari 2020, 23:26

2 jawaban

Jawaban Terbaik

Bungkus di aliran lain:

PrintStream newOut = new PrintStream(System.out, true);
// And then set it to out (Credit to David Zimmerman in the comments)
System.setOut(newOut);
5
nylanderDev 29 Januari 2020, 20:41

Setelah System.out.println() jalankan System.out.flush()

0
JuanMoreno 29 Januari 2020, 23:10