पहले मुझे डर है कि आपके प्रश्न में थोड़ी सी गलती है। क्लास कंसोल में मेथड राइटलाइन नहीं है। इसके बजाय वर्ग कंसोल विधि लेखक () प्रदान करता है जो PrintWriter देता है। इस प्रिंट लेखक का प्रिंटलाइन () है।
अब इसमें क्या अंतर है
System.console().writer().println("hello from console");
तथा
System.out.println("hello system out");
यदि आप कमांड लाइन से अपना आवेदन चलाते हैं तो मुझे लगता है कि कोई अंतर नहीं है। लेकिन यदि कंसोल अनुपलब्ध है System.console () अभी भी अशक्त है जबकि System.out अभी भी मौजूद है। ऐसा तब हो सकता है जब आप अपने आवेदन को लागू करते हैं और फ़ाइल के लिए STDOUT का पुनर्निर्देशन करते हैं।
यहाँ एक उदाहरण है जिसे मैंने अभी लागू किया है।
import java.io.Console;
public class TestConsole {
public static void main(String[] args) {
Console console = System.console();
System.out.println("console=" + console);
console.writer().println("hello from console");
}
}
जब मैंने एप्लिकेशन को कमांड प्रॉम्प्ट से चलाया तो मुझे निम्नलिखित मिला:
$ java TestConsole
console=java.io.Console@93dcd
hello from console
लेकिन जब मैंने फ़ाइल को STDOUT पर पुनर्निर्देशित किया ...
$ java TestConsole >/tmp/test
Exception in thread "main" java.lang.NullPointerException
at TestConsole.main(TestConsole.java:8)
पंक्ति 8 है console.writer().println()
।
यहाँ / tmp / test की सामग्री है
console=null
मुझे आशा है कि मेरे स्पष्टीकरण से मदद मिलेगी।