StackWalker API Java 9 . में पेश किया गया है , और यह किसी भी समय वर्तमान थ्रेड के स्टैक ट्रेस का एक स्नैपशॉट देता है और इसके ऊपर चलने के तरीके हैं। StackWalker . का उपयोग करने का लाभ थ्रेड पर क्लास ::getStackTrace () फ़िल्टर के लिए है या छोड़ें कुछ वर्ग और कक्षा को स्वयं घोषित करने का उदाहरण प्राप्त करें और पूर्ण स्टैक ट्रेस को स्वयं खींचने के बजाय या तो छोटा स्टैक ट्रेस या पूर्ण स्टैक ट्रेस प्राप्त करें।
नीचे दिए गए उदाहरण में, हम उपयोग कर सकते हैं java.util.stream.Stream.skip() स्टैक फ्रेम्स को छोड़ने की विधि।
उदाहरण
आयात करें शून्य मुख्य (स्ट्रिंग args []) {नया StackWalkerSkipTest ()। स्टैकवॉक (); } निजी वर्ग StackWalker4 { public void stackWalk4() { सूची फ्रेमआफ्टरस्किप =StackWalker.getInstance(StackWalker.Option.RETAIN_CLASS_REFERENCE ).वॉक((ओं) ->एस.छोड़ें (2).संग्रह(कलेक्टर.toList() )); System.out.println ("छोड़ने के बाद फ्रेम:\ n" + फ्रेमआफ्टरस्किप.toString ()); }} सार्वजनिक शून्य स्टैकवॉक () {नया स्टैकवॉकर 1 ()। स्टैकवॉक 1 (); } निजी वर्ग स्टैकवॉकर 1 {सार्वजनिक शून्य स्टैकवॉक 1 () {नया स्टैकवॉकर 2 ()। स्टैकवॉक 2 (); } } निजी वर्ग StackWalker2 {सार्वजनिक शून्य stackWalk2 () {नया StackWalker3 ()। StackWalk3 (); }} निजी वर्ग StackWalker3 {सार्वजनिक शून्य स्टैकवॉक 3 () {नया स्टैकवॉकर 4 ()। स्टैकवॉक 4 (); } }} आउटपुट
छोड़ने के बाद के फ्रेम :[StackWalkerSkipTest$StackWalker2.stackWalk2(StackWalkerSkipTest.java:29),StackWalkerSkipTest$StackWalker1.stackWalk1(StackWalkerSkipTest.java:24),StackWalkerSkipTest.java:24), मुख्य(StackWalkerSkipTest.java:9)]