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

Java 9 में StackWalker.getCallerClass() मेथड का उपयोग कब करें?

StackWalker API का अवलोकन

Java 9 ने StackWalker API पेश किया जो स्टैक वॉकिंग के लिए एक कुशल, लेजी और फिल्टर करने योग्य तंत्र प्रदान करता है। StackWalker ऑब्जेक्ट स्टैक फ्रेम्स को ट्रैवर्स और एक्सेस करने की अनुमति देता है। इसमें walk(), forEach(), और getCallerClass() जैसे उपयोगी मेथड्स शामिल हैं।

getCallerClass() मेथड

getCallerClass() उस क्लास को लौटाता है जो उस मेथड को कॉल करती है जिसमें यह मेथड मौजूद होता है। कॉलिंग क्लास इंस्टेंस प्राप्त करने के लिए, StackWalker इंस्टेंस प्राप्त करते समय RETAIN_CLASS_REFERENCE ऑप्शन सक्षम करना आवश्यक है। यह ऑप्शन StackWalker द्वारा वॉक की गई सभी क्लासेस के रेफरेंस को बनाए रखता है।

सिंटैक्स

public Class<?> getCallerClass()

उदाहरण

import java.lang.StackWalker.Option;

public class StackWalkerTest {
    public static void main(String args[]) {
        StackWalkerTest1.test1();
    }
}

class StackWalkerTest1 {
    protected static void test1() {
        StackWalkerTest2.test2();
    }
}

class StackWalkerTest2 {
    protected static void test2() {
        System.out.println(StackWalker.getInstance(Option.RETAIN_CLASS_REFERENCE).getCallerClass());
    }
}

आउटपुट

class StackWalkerTest1

यहां StackWalkerTest2.test2() से getCallerClass() कॉल करने पर StackWalkerTest1 क्लास प्राप्त होती है, क्योंकि वही तत्काल कॉलर है।

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

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

  1. - क्या हम Java में क्लास नाम के समान मेथड नाम परिभाषित कर सकते हैं?

    हाँ, क्लास के समान नाम वाला मेथड परिभाषित करना अनुमत है। कोई कंपाइल-टाइम या रनटाइम एरर नहीं होगा। लेकिन Java में कोडिंग स्टैंडर्ड्स के अनुसार इसकी अनुशंसा नहीं की जाती है। आमतौर पर कंस्ट्रक्टर नाम और क्लास नाम हमेशा समान होते हैं। उदाहरण public class MethodNameTest { private String str = Welco

  1. - Java में एब्सट्रैक्ट क्लास कब उपयोग करें और इंटरफेस कब उपयोग करें?

    एक इंटरफेस का उपयोग कॉन्ट्रैक्ट बिहेवियर को परिभाषित करने के लिए किया जा सकता है और यह दो सिस्टम्स के बीच इंटरैक्ट करने के लिए कॉन्ट्रैक्ट के रूप में भी कार्य कर सकता है जबकि एक एब्सट्रैक्ट क्लास मुख्य रूप से सबक्लासेस के लिए डिफ़ॉल्ट बिहेवियर को परिभाषित करने के लिए उपयोग की जाती है, इसका अर्थ है