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

StackWalker API ใน Java 9?


StackWalker API ช่วยให้การกรองที่ง่ายและการเข้าถึงแบบสันหลังยาวเพื่อดำเนินการงานด้วยวิธีการใดก็ได้ เป็น API ที่มีประสิทธิภาพในการรับข้อมูลการติดตามสแต็กใน Java 9 .

มีสามคลาสที่สำคัญใหม่ใน 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 และให้ตัวเลือกสำหรับ stack walker เพื่อกำหนดค่าข้อมูล stack frame เมื่อเราสร้างอินสแตนซ์ผ่าน SackWalker.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