Rumah >Java >javaTutorial >Bagaimana untuk memaparkan bingkai pantulan StackFrame dalam Java 9?

Bagaimana untuk memaparkan bingkai pantulan StackFrame dalam Java 9?

WBOY
WBOYke hadapan
2023-09-04 17:09:031009semak imbas

如何在Java 9中显示StackFrame的反射框架?

menyediakan API standard dalam Java 9, menggunakan kelas java.lang.StackWalker . Kelas ini direka bentuk untuk menjadi cekap dengan membenarkan akses tertunda kepada bingkai tindanan. Selain itu, terdapat beberapa pilihan untuk memasukkan pelaksanaan dan/atau bingkai pantulan dalam surih tindanan, yang boleh menjadi sangat berguna untuk tujuan penyahpepijatan. Sebagai contoh, kami menambah pilihan SHOW_REFLECT_FRAMES semasa mencipta tika StackWalker untuk mencetak bingkai kaedah pantulan.

Dalam contoh di bawah, kita boleh memaparkan bingkai pantulan StackFrame

Contoh

import java.lang.StackWalker.Option;
import java.lang.StackWalker.StackFrame;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.List;
import java.util.stream.Collectors;

public class ReflectionFrameTest {
   public static void main(String args[]) throws NoSuchMethodException, SecurityException, IllegalAccessException, IllegalArgumentException, InvocationTargetException {
      <strong>Method </strong>test1Method = Test1.class.<strong>getDeclaredMethod</strong>("test1", (Class<!--?-->[]) null);
      test1Method.<strong>invoke</strong>(null, (Object[]) null);
   }
}
class Test1 {
   protected static void test1() {
      Test2.test2();
   }
}
class Test2 {
   protected static void test2() {
      <strong>// show reflection methods</strong>
      <strong>List<StackFrame></strong> stack = <strong>StackWalker.getInstance</strong>(Option.<strong>SHOW_REFLECT_FRAMES</strong>).walk((s) -> s.collect(Collectors.toList()));
      for(<strong>StackFrame </strong>frame : stack) {
         System.out.println(frame.<strong>getClassName()</strong> + " " + frame.<strong>getLineNumber()</strong> + " " + frame.<strong>getMethodName()</strong>);
      }
   }
}

Output

rreee

Atas ialah kandungan terperinci Bagaimana untuk memaparkan bingkai pantulan StackFrame dalam Java 9?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:tutorialspoint.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam