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

เมื่อไหร่ควรใช้เมธอด StackWalker.getCallerClass() ใน Java 9

Java 9 นำเสนอ StackWalker API ซึ่งเป็นวิธีการเดินสแต็ก (stack walking) ที่มีประสิทธิภาพสำหรับการเข้าถึงแบบ Lazy การกรองสแต็กทрейส คลาส StackWalker ช่วยให้เราสามารถวิ่งไปดูและเข้าถึงสแต็กได้ มีเมธอดที่มีประโยชน์อย่าง walk() forEach() และ getCallerClass()

เมธอด getCallerClass() จะคืนค่าคลาสที่เรียกใช้เมธอดที่เรียกใช้เมธอดนี้ (caller of the caller) เพื่อให้ได้อินสแตนซ์ของคลาสที่เรียก เราต้องระบุ RETAIN_CLASS_REFERENCE ขณะสร้างอินสแตนซ์ StackWalker ตัวเลือกนี้จะเก็บอินสแตนซ์ของคลาสทั้งหมดที่ StackWalker เดินผ่านไว้

ไวยากรณ์

public Class<?> getCallerClass()

ตัวอย่างการใช้งาน

import java.lang.StackWalker.Option;

public class StackWalkerTest {
    public static void main(String args[]) {
        StackWalkerTest1.test1();
    }
}

class StackWalkerTest1 {
    protected static void test1() {
        StackWalkerTest2.test2();
    }
}

class StackWalkerTest2 {
    protected static void test2() {
        System.out.println(
            StackWalker.getInstance(Option.RETAIN_CLASS_REFERENCE).getCallerClass()
        );
    }
}

ผลลัพธ์

class StackWalkerTest1

ในตัวอย่างนี้ StackWalkerTest2.test2() เรียก getCallerClass() ซึ่งจะคืนค่าคลาสที่เรียก test2() คือ StackWalkerTest1