> Java > java지도 시간 > 본문

Java 9의 StackFrame에서 특정 클래스를 건너뛰는 방법은 무엇입니까?

WBOY
풀어 주다: 2023-09-19 09:13:04
앞으로
489명이 탐색했습니다.

如何在Java 9中跳过StackFrame中的某些类?

StackWalker API Java 9에 도입된 이 API는 특정 시점의 현재 스레드에 대한 스택 추적 스냅샷을 제공하고 이를 살펴보는 메서드를 제공합니다. Thread::getStackTrace()와 비교하여 StackWalker 클래스를 사용하면 특정 클래스를 필터링 하거나 건너뛰고 클래스 자체가 선언된 인스턴스를 가져오고 대신 짧은 스택 추적 또는 전체 스택 추적을 얻을 수 있다는 장점이 있습니다. 전체 스택 추적 자체를 추출합니다.

아래 예에서는 java.util.stream.Stream.skip()

Strong> 메서드를 사용하여 스택 프레임을 건너뛸 수 있습니다.

import java.lang.StackWalker.*;
import java.util.Optional;
import java.util.List;
import java.util.stream.Collectors;
import java.lang.StackWalker.StackFrame;

public class StackWalkerSkipTest {
   public static void main(String args[]) {
      new StackWalkerSkipTest().stackWalk();
   }
   private class StackWalker4 {
      public void stackWalk4() {
      <strong>List<StackFrame></strong> framesAfterSkip = StackWalker.getInstance(<strong>StackWalker.Option.RETAIN_CLASS_REFERENCE</strong>).walk((s) ->
s.<strong>skip</strong>(2).collect(<strong>Collectors.toList()</strong>));
      System.out.println("Frames after skip : \n" + framesAfterSkip.toString());
   }
}
   public void stackWalk() {
      new StackWalker1().stackWalk1();
   }
   private class StackWalker1 {
      public void stackWalk1() {
         new StackWalker2().stackWalk2();
      }
   }
   private class StackWalker2 {
      public void stackWalk2() {
         new StackWalker3().stackWalk3();
      }
   }
   private class StackWalker3 {
      public void stackWalk3() {
         new StackWalker4().stackWalk4();
      }
   }
}
로그인 후 복사

출력

<strong>Frames after skip :
[StackWalkerSkipTest$StackWalker2.stackWalk2(StackWalkerSkipTest.java:29),
StackWalkerSkipTest$StackWalker1.stackWalk1(StackWalkerSkipTest.java:24),
StackWalkerSkipTest.stackWalk(StackWalkerSkipTest.java:19),
StackWalkerSkipTest.main(StackWalkerSkipTest.java:9)]</strong>
로그인 후 복사

위 내용은 Java 9의 StackFrame에서 특정 클래스를 건너뛰는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:tutorialspoint.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!