StackWalker দিয়ে lazy stack inspection
সম্পূর্ণ stack trace materialize করার পরিবর্তে StackWalker দিয়ে lazy পদ্ধতিতে stack frame inspect করুন।
কোড তুলনা
✕ Materialized stack trace
StackTraceElement caller = Thread.currentThread()
.getStackTrace()[2];
String callerClass = caller.getClassName();
✓ Java 9+
String callerClass = StackWalker.getInstance()
.walk(frames -> frames.skip(1)
.findFirst()
.orElseThrow()
.getClassName());
এই কোডে সমস্যা দেখছেন? আমাদের জানান।
কেন আধুনিক পদ্ধতি ভালো
Lazy traversal
অপারেশনের প্রয়োজনীয় frameগুলোতেই কেবল যায়।
Stream-বান্ধব
Filtering এবং selection standard stream operation ব্যবহার করে।
কনফিগারযোগ্য
Optionগুলো class reference এবং hidden বা reflective frame সমর্থন করে।
পুরনো পদ্ধতি
Thread.getStackTrace()
আধুনিক পদ্ধতি
StackWalker
JDK থেকে
9
কঠিনতা
মধ্যম
JDK সমর্থন
StackWalker দিয়ে lazy stack inspection
উপলব্ধ
JDK 9 (সেপ্টেম্বর 2017) থেকে ব্যাপকভাবে উপলব্ধ
কীভাবে কাজ করে
StackWalker stack frame-এর একটি lazy stream এবং ধরে রাখা class reference-এ configurable access দেয়। সম্পূর্ণ stack-trace array allocate না করে প্রয়োজনীয় frame পাওয়া গেলেই কোড থামতে পারে।
সম্পর্কিত ডকুমেন্টেশন
প্রমাণ