स्टैकवॉकर एपीआई किसी भी विधि के भीतर कार्यों को निष्पादित करने के लिए आसान फ़िल्टरिंग और आलसी पहुंच की अनुमति देता है। यह Java 9 . में स्टैक ट्रेस जानकारी प्राप्त करने के लिए एक कुशल API है ।
StackWalker API में तीन नए महत्वपूर्ण वर्ग हैं:StackWalker , StackWalker.StackFrame और StackWalker.Option ।
स्टैकवॉकर - यह StackWalker . में मुख्य वर्ग है एपीआई . हम StackWalker.forEach() . का उपयोग करके स्टैक फ़्रेम को पार करते हैं विधि और StackWalker.getCallerClass() पर कॉल करके कुशल तरीके से कॉलर क्लास प्राप्त करें तरीका। हम स्टैक ट्रेस के माध्यम से चलते हैं और StackWalker.walk() का उपयोग करके स्टैक फ़्रेम की स्ट्रीम पर फ़ंक्शन लागू करते हैं विधि।
StackWalker.StackFrame - यह एक स्थिर नेस्टेड वर्ग है StackWalker का और StackWalker द्वारा विधि आमंत्रण वापसी का प्रतिनिधित्व करता है। इसमें दी गई स्टैक फ्रेम जानकारी तक पहुंचने के तरीके हैं जैसे getDeclaringClass() , getLineNumber() और आदि।
StackWalker.Option - यह एक स्थिर नेस्टेड वर्ग . है जब हम SackWalker.getInstance() के माध्यम से एक इंस्टेंस बनाते हैं तो स्टैक वॉकर के लिए स्टैक फ्रेम जानकारी को कॉन्फ़िगर करने के लिए विकल्प प्रदान करता है। ।
उदाहरण
आयात करें स्टैक =स्टैकवॉकर।getInstance () .चलना (एस -> एस.एकत्र करें (कलेक्टर.toList ())); for(StackWalker.StackFrame sf :स्टैक) { System.out.println(sf.getClassName() + "::" + sf.getMethodName() + ":" + sf.getLineNumber() ); } }}आउटपुट
StackWalkingTest::main:6