Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

เราสามารถใช้เมธอด StackWalker.getCallerClass() ใน Java 9 ได้เมื่อใด


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