Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Java

क्या Java में main मेथड को private घोषित कर सकते हैं?


हां, हम Java में main मेथड को private घोषित कर सकते हैं।

यह बिना किसी त्रुटि के सफलतापूर्वक कंपाइल हो जाता है लेकिन रनटाइम पर यह कहता है कि main मेथड पब्लिक नहीं है।

उदाहरण

class PrivateMainMethod {
    private static void main(String args[]) {
        System.out.println("Welcome to Tutorials Point");
    }
}

उपरोक्त कोड कंपाइल टाइम पर सफलतापूर्वक काम करता है लेकिन रनटाइम पर त्रुटि फेंकेगा।

आउटपुट (रनटाइम त्रुटि)

Error: Main method not found in class PrivateMainMethod, please define the main method as:
public static void main(String[] args)
or a JavaFX application class must extend javafx.application.Application

क्यों कंपाइल होता है लेकिन रन नहीं होता?

चरणक्या होता है
कंपाइल टाइमकंपाइलर केवल सिंटैक्स जांचता है। private static void main(String[]) वैध सिंटैक्स है।
क्लास लोडिंगJVM क्लास लोड करता है और main मेथड ढूंढता है।
एंट्री पॉइंट खोजJVM विशेष रूप से public static void main(String[]) सिग्नेचर ढूंढता है।
एक्सेस चेकprivate मेथड JVM के लिए दृश्यमान नहीं है (बाहरी दुनिया से छिपा हुआ)।
परिणामJVM एंट्री पॉइंट नहीं ढूंढ पाता और त्रुटि फेंकता है।

main मेथड के लिए आवश्यक सिग्नेचर

public static void main(String[] args)
  • public: JVM (बाहरी) द्वारा एक्सेसिबल होना चाहिए।
  • static: ऑब्जेक्ट बनाए बिना कॉल करने योग्य होना चाहिए।
  • void: JVM को कोई मान वापस नहीं करता।
  • main: निश्चित नाम जिसे JVM ढूंढता है।
  • String[] args: कमांड लाइन आर्गुमेंट्स स्वीकार करता है।

वैकल्पिक वैध सिग्नेचर्स (Java 5+)

// Varargs सिंटैक्स
public static void main(String... args)

// पूर्ण रूप से योग्य
public static void main(java.lang.String[] args)

अन्य एक्सेस मॉडिफायर्स के साथ व्यवहार

मॉडिफायरकंपाइलरननोट
public✓✓मानक, सही
private✓✗JVM देख नहीं सकता
protected✓✗JVM देख नहीं सकता (सबक्लास/पैकेज के बाहर)
default (package-private)✓✗JVM देख नहीं सकता (पैकेज के बाहर)

निष्कर्ष: main मेथड अवश्य public होना चाहिए। private (या अन्य गैर-पब्लिक मॉडिफायर) कंपाइल तो हो जाएगा लेकिन JVM एंट्री पॉइंट नहीं ढूंढ पाएगा और रनटाइम त्रुटि देगा।

  1. Java में pack() मेथड का उपयोग कब कर सकते हैं? Java में pack() मेथड का उपयोग कब कर सकते हैं?

    pack() मेथड Java में Window क्लास में परिभाषित है और यह फ्रेम को इस तरह आकार देता है कि इसकी सभी सामग्री उनके पसंदीदा आकार पर या उससे ऊपर हैं। pack() मेथड का एक विकल्प setSize() या setBounds() मेथड्स को कॉल करके फ्रेम आकार को स्पष्ट रूप से स्थापित करना है। सामान्य तौर पर, pack() मेथड का उपयोग setSiz

  1. जावा में invokeLater() मेथड को कैसे कॉल करें? जावा में invokeLater() मेथड को कैसे कॉल करें?

    invokeLater() मेथड SwingUtilities क्लास का एक स्टैटिक मेथड है और इसका उपयोग AWT इवेंट डिस्पैचर थ्रेड में असिंक्रोनसली कार्य करने के लिए किया जा सकता है। SwingUtilities.invokeLater() मेथड SwingUtilities.invokeAndWait() की तरह काम करता है सिवाय इसके कि यह अनुरोध को इवेंट क्यू पर रखता है और तुरंत वापस

  1. Java में JPanel के paintComponent() विधि को कैसे लागू करें? Java में JPanel के paintComponent() विधि को कैसे लागू करें?

    एक JPanel एक हल्का कंटेनर है और यह Java में एक अदृश्य घटक है। JPanel का डिफ़ॉल्ट लेआउट FlowLayout है। JPanel बनने के बाद, अन्य घटकों को JPanel ऑब्जेक्ट में इसकी add() विधि को कॉल करके जोड़ा जा सकता है जो Container क्लास से विरासत में मिली है। paintComponent() यह विधि JPanel पर बैकग्राउंड कलर बनाने