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

जावा 9 में स्टैकवॉकर एपीआई का उपयोग करके स्टैक फ्रेम को कैसे फ़िल्टर करें?


StackWalker एपीआई एक प्रोग्राम के निष्पादन के दौरान स्टैक ट्रेस में सूचना की एक धारा प्रदान करता है। इस API के लिए एक वर्चुअल मशीन . की आवश्यकता है संपूर्ण स्टैक का एक स्नैपशॉट कैप्चर करने के लिए और फ़िल्टरिंग उद्देश्यों के लिए तत्वों की एक सरणी देता है। हमें walk() . का उपयोग करके स्टैक फ़्रेम को छोड़ना, छोड़ना और सीमित करना होगा तरीका। हम पहला मिलान करने वाला फ़्रेम प्राप्त करने के लिए एक स्टैक फ़्रेम को वर्ग द्वारा फ़िल्टर कर सकते हैं, और सभी मिलान फ़्रेम को फ़िल्टर () का उपयोग करके फ़िल्टर कर सकते हैं। विधि।

नीचे दिए गए उदाहरण में, हम StackWalker API का उपयोग करके स्टैक फ़्रेम को फ़िल्टर कर सकते हैं।

उदाहरण

आयात करें फ़िल्टर क्लासेस =नया ऐरेलिस्ट <> (); filterClasses.add (StackWalkerFilterTest.class); System.out.println ("--- क्लास द्वारा फ़िल्टर फ़्रेम>> पहला मिलान फ़्रेम प्राप्त करें ---"); वैकल्पिक फ्रेमबायक्लास =फाइंडफ्रेमबायक्लास (फिल्टरक्लास); System.out.println (frameByClass.toString ()); System.out.println ("--- क्लास द्वारा फ़िल्टर फ़्रेम>> सभी मिलान फ़्रेम प्राप्त करें ---"); सूची फ्रेमबायक्लास =findAllFramesByClass (फ़िल्टर क्लास); System.out.println(framesByClass); } निजी स्थिर वैकल्पिक findFrameByClass(List filterClasses) { वापसी StackWalker.getInstance (StackWalker.Option.RETAIN_CLASS_REFERENCE ).चलना (एस -> एस.फ़िल्टर (f -> filterClasses.contains(f.getDeclaringClass())).findFirst() ); } निजी स्थिर सूची findAllFramesByClass(List filterClasses) { वापसी StackWalker.getInstance(StackWalker.Option.RETAIN_CLASS_REFERENCE ).चलना (एस -> एस.फ़िल्टर (f -> filterClasses.contains(f.getDeclaringClass())).एकत्र करें (कलेक्टर.toList ())); }}

आउटपुट

---फ़िल्टर फ़्रेम बाय क्लास>> पहले मैचिंग फ्रेम प्राप्त करें ---Optional[StackWalkerTest.findFrameByClass(StackWalkerTest.java:20)]--- फ़िल्टर फ़्रेम को क्लास के अनुसार>> सभी मिलते-जुलते फ़्रेम प्राप्त करें -- -[StackWalkerTest.findAllFramesByClass(StackWalkerTest.java:23), StackWalkerTest2.main(StackWalkerTest.java:15)] 

  1. जावा स्टैक क्लास

    जावा स्टैक एक लास्ट-इन, फर्स्ट-आउट डेटा संरचना है। स्टैक से निकाला गया पहला आइटम वह आइटम होता है जिसे अंतिम बार स्टैक में जोड़ा जाता है। स्टैक डेटा संरचना स्टैक के अंत में नए आइटम जोड़ती है। जावा स्टैक वेक्टर वर्ग का विस्तार करते हैं। प्रोग्रामिंग में, स्टैक डेटा को स्टोर करने के लिए उपयोग की जाने

  1. साल एपीआई कक्षा का उपयोग कर एंड्रॉइड में साल कैसे प्राप्त करें?

    यह उदाहरण प्रदर्शित करता है कि वर्ष एपीआई वर्ग का उपयोग करके एंड्रॉइड में वर्ष कैसे प्राप्त करें। चरण 1 - एंड्रॉइड स्टूडियो में एक नया प्रोजेक्ट बनाएं, फाइल ⇒ न्यू प्रोजेक्ट पर जाएं और एक नया प्रोजेक्ट बनाने के लिए सभी आवश्यक विवरण भरें। चरण 2 - निम्न कोड को res/layout/activity_main.xml में जोड़ें

  1. जावा में अज्ञात आंतरिक वर्ग का उपयोग करके इंटरफ़ेस को कैसे कार्यान्वित करें?

    एक अनाम आंतरिक वर्ग एक ऐसा वर्ग है जिसका कोई नाम नहीं है, हम इसे सीधे इंस्टेंटेशन लाइन पर परिभाषित करेंगे। उदाहरण निम्नलिखित प्रोग्राम में, हम Anonymous इनर क्लास का उपयोग करके TutorialsPoint इंटरफ़ेस की toString () पद्धति को लागू कर रहे हैं और इसके रिटर्न वैल्यू को प्रिंट कर रहे हैं। interface Tut