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

क्या मेथड लोकल इनर क्लास Java में लोकल फाइनल वेरिएबल्स को एक्सेस कर सकती है?

हाँ, हम मेथड लोकल इनर क्लास का उपयोग करके लोकल फाइनल वेरिएबल्स को एक्सेस कर सकते हैं क्योंकि फाइनल वेरिएबल्स हीप पर स्टोर होते हैं और तब तक जीवित रहते हैं जब तक मेथड लोकल इनर क्लास ऑब्जेक्ट जीवित रह सकता है।

मेथड लोकल इनर क्लास

  • एक लोकल इनर क्लास इंस्टेंस को आर्गुमेंट के रूप में डिलीवर किया जा सकता है और मेथड्स से पुनर्प्राप्त किया जा सकता है और यह वैध स्कोप के अंदर उपलब्ध होता है।
  • मेथड लोकल इनर क्लास में एकमात्र सीमा यह है कि एक लोकल पैरामीटर केवल तभी निष्पादित किया जा सकता है जब इसे फाइनल के रूप में परिभाषित किया गया हो।
  • मेथड को लोकल पैरामीटर्स को निष्पादित करने के लिए कहा जा सकता है, उस मेथड के निष्पादन के बाद जिसके भीतर लोकल इनर क्लास घोषित की गई थी। परिणामस्वरूप, लोकल पैरामीटर्स अब अपने मानों को बरकरार नहीं रखेंगे।
  • मान लोकल इनर क्लास ऑब्जेक्ट बनाने से पहले निश्चित होने चाहिए। यदि आवश्यक हो, तो एक नॉन-फाइनल वेरिएबल को फाइनल वेरिएबल में कॉपी किया जा सकता है जिसे बाद में लोकल इनर क्लास द्वारा निष्पादित किया जाता है।

उदाहरण

class MainClassTest { 
    private int x = 10; 
    public void sampleMethod() { 
        final int y = 20; 
        class MethodLocalInnerClassTest { 
            public void accessMainClassVar() { 
                System.out.println(x); // आउटर क्लास वेरिएबल एक्सेस करना 
                System.out.println(y); // फाइनल लोकल वेरिएबल एक्सेस करना 
            } 
        } 
        MethodLocalInnerClassTest mainTest = new MethodLocalInnerClassTest(); 
        mainTest.accessMainClassVar(); 
    } 
} 

// Test.java 
public class Test { 
    public static void main(String args[]) { 
        MainClassTest test = new MainClassTest(); 
        test.sampleMethod(); 
    } 
}

आउटपुट

10 
20

नोट: Java 8 से, "इफेक्टिवली फाइनल" वेरिएबल्स (जिन्हें असाइनमेंट के बाद संशोधित नहीं किया जाता) भी लोकल इनर क्लास में एक्सेस किए जा सकते हैं, भले ही वे स्पष्ट रूप से final मार्क न किए गए हों।

  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 पर बैकग्राउंड कलर बनाने