"Halo, Amigo! Hari ini Anda akan belajar bagaimana melakukan sesuatu yang baru: mengganti objek System.out."
System.out adalah variabel PrintStream statis yang dipanggil di kelas System . Variabel ini memiliki pengubah final , jadi Anda cukup menetapkannya sebagai nilai baru. Namun, kelas Sistem memiliki metode khusus untuk melakukan ini: setOut(PrintStream stream) . Dan itulah yang akan kita gunakan.
"Menarik. Dan dengan apa kita akan menggantinya?"
"Kami memerlukan beberapa objek yang dapat mengumpulkan data keluaran. ByteArrayOutputStream paling cocok untuk pekerjaan ini. Ini adalah kelas khusus yang merupakan larik dinamis (dapat diubah ukurannya) dan mengimplementasikan antarmuka OutputStream."
"Adaptor antara array dan OutputStream?"
"Sesuatu seperti itu. Seperti inilah kode kita."
public static void main(String[] args) throws Exception
{
//Save the current PrintStream in a special variable
PrintStream consoleStream = System.out;
//Create a dynamic array
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
//Create an adapter for the PrintStream class
PrintStream stream = new PrintStream(outputStream);
//Set it as the current System.out
System.setOut(stream);
//Call a function that knows nothing about our changes
printSomething();
//Convert the data written to our ByteArray into a string
String result = outputStream.toString();
//Put everything back to the way it was
System.setOut(consoleStream);
}
public static void printSomething()
{
System.out.println("Hi");
System.out.println("My name is Amigo");
System.out.println("Bye-bye!");
}
"Dan apa yang akan kita lakukan dengan baris ini?"
"Baiklah, apapun yang kita inginkan. Misalnya, kita akan membalikkannya. Maka kodenya akan terlihat seperti ini:"
public static void main(String[] args) throws Exception
{
//Save the current PrintStream in a special variable
PrintStream consoleStream = System.out;
//Create a dynamic array
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
//Create an adapter for the PrintStream class
PrintStream stream = new PrintStream(outputStream);
//Set it as the current System.out
System.setOut(stream);
//Call a function that knows nothing about our changes
printSomething();
//Convert the data written to our ByteArray into a string
String result = outputStream.toString();
//Put everything back to the way it was
System.setOut(consoleStream);
//Reverse the string
StringBuilder stringBuilder = new StringBuilder(result);
stringBuilder.reverse();
String reverseString = stringBuilder.toString();
//Output it to the console
System.out.println(reverseString);
}
public static void printSomething()
{
System.out.println("Hi");
System.out.println("My name is Amigo");
System.out.println("Bye-bye!");
}
"Menarik sekali! Sekarang saya mulai memahami sedikit kemampuan hebat yang disediakan oleh kelas-kelas kecil ini."
"Terima kasih atas pelajaran yang menarik, Bilaabo."
GO TO FULL VERSION