Heim > Java > javaLernprogramm > Hauptteil

Wie zeige ich den Reflexionsrahmen von StackFrame in Java 9 an?

WBOY
Freigeben: 2023-09-04 17:09:03
nach vorne
988 Leute haben es durchsucht

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

stellt eine Standard-API in Java 9 bereit und verwendet die Klasse java.lang.StackWalker . Diese Klasse ist auf Effizienz ausgelegt, indem sie einen lazy-Zugriff auf Stack-Frames ermöglicht. Darüber hinaus gibt es mehrere Möglichkeiten, Implementierungs- und/oder „Reflection Frames“ in den Stack-Trace einzubinden, was für Debugging-Zwecke sehr nützlich sein kann. Beispielsweise fügen wir beim Erstellen einer StackWalker-Instanz die Option SHOW_REFLECT_FRAMES hinzu, um die Frames der Reflexionsmethode zu drucken. Im folgenden Beispiel können wir den Reflexionsrahmen des StackFrame anzeigen

Beispiel

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>);
      }
   }
}
Nach dem Login kopieren

Ausgabe

<strong>Test2 22 test2
Test1 16 test1
jdk.internal.reflect.NativeMethodAccessorImpl -2 invoke0
jdk.internal.reflect.NativeMethodAccessorImpl 62 invoke
jdk.internal.reflect.DelegatingMethodAccessorImpl 43 invoke
java.lang.reflect.Method 564 invoke
ReflectionFrameTest 11 main</strong>
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie zeige ich den Reflexionsrahmen von StackFrame in Java 9 an?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:tutorialspoint.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage