StackWalker API যেকোনো মেথডের ভিতরে টাস্ক এক্সিকিউট করার জন্য সহজ ফিল্টারিং এবং লেজি এক্সেস অনুমতি দেয়। এটি জাভা ৯-এ স্ট্যাক ট্রেস ইনফরমেশন পাওয়ার একটি দক্ষ API।
StackWalker API-তে তিনটি নতুন গুরুত্বপূর্ণ ক্লাস রয়েছে: StackWalker, StackWalker.StackFrame এবং StackWalker.Option।
- StackWalker: StackWalker API-র মূল ক্লাস। StackWalker.forEach() মেথড ব্যবহার করে স্ট্যাক ফ্রেম ট্রাভার্স করা যায় এবং StackWalker.getCallerClass() মেথড কল করে কলার ক্লাস দক্ষতার সাথে পাওয়া যায়। StackWalker.walk() মেথড ব্যবহার করে স্ট্যাক ট্রেস ওয়াক করা এবং স্ট্যাক ফ্রেমের স্ট্রিমে ফাংশন অ্যাপ্লাই করা যায়।
- StackWalker.StackFrame: StackWalker-এর একটি স্ট্যাটিক নেস্টেড ক্লাস যা StackWalker দ্বারা রিটার্ন করা মেথড ইনভোকেশনকে রিপ্রেজেন্ট করে। এর মেথডগুলোর মাধ্যমে একটি স্ট্যাক ফ্রেমের ইনফরমেশন এক্সেস করা যায় যেমন getDeclaringClass(), getLineNumber() ইত্যাদি।
- StackWalker.Option: StackWalker-এর একটি স্ট্যাটিক নেস্টেড ক্লাস যা স্ট্যাক ওয়াকার কনফিগার করার অপশন প্রদান করে যখন StackWalker.getInstance() দিয়ে ইনস্ট্যান্স তৈরি করা হয়।
উদাহরণ
import java.util.List;
import java.util.stream.Collectors;
public class StackWalkingTest {
public static void main(String args[]) {
final List<StackWalker.StackFrame> stack = StackWalker.getInstance()
.walk(s -> s.collect(Collectors.toList()));
for(StackWalker.StackFrame sf : stack) {
System.out.println(sf.getClassName() + "::" + sf.getMethodName() + ":" + sf.getLineNumber());
}
}
}
আউটপুট
StackWalkingTest::main:6