Java 9 ได้จัดเตรียมวิธีเดินสแต็กอย่างมีประสิทธิภาพสำหรับการเข้าถึงแบบ Lazy โดยการกรองการติดตามสแต็กโดยใช้ StackWalker API วัตถุของ StackWalker สามารถทำให้เราสำรวจและเข้าถึงกองได้ คลาสนี้มีวิธีการที่เป็นประโยชน์ เช่น walk() , forEach() และ getCallerClass() .
The getCallerClass() เมธอดส่งคืนคลาสที่เรียกใช้เมธอดที่เรียกใช้เมธอดนี้ ในการรับอินสแตนซ์ของคลาสการเรียก เราต้องการ RETAIN_CLASS_REFERENCE ในขณะที่รับอินสแตนซ์ StackWalker RETAIN_CLASS_REFERENCE เก็บตัวอย่างของทุกชั้นเรียนที่เดินโดย StackWalker
ไวยากรณ์
คลาสสาธารณะ> getCallerClass()
ตัวอย่าง
<ก่อนหน้า>นำเข้า java.lang.StackWalker.Option; StackWalkerTest คลาสสาธารณะ { โมฆะคงที่สาธารณะหลัก (สตริง args []) { StackWalkerTest1.test1 (); }} คลาส StackWalkerTest1 { ป้องกันการทดสอบโมฆะคงที่ () { StackWalkerTest2.test2 (); }} คลาส StackWalkerTest2 { ป้องกันการทดสอบโมฆะแบบคงที่ () { System.out.println (StackWalker.getInstance (Option.RETAIN_CLASS_REFERENCE ).getCallerClass() ); }}ผลลัพธ์
คลาส StackWalkerTest1