Java
 Computer >> コンピューター >  >> プログラミング >> Java

Java 9のStackFrameで特定のクラスをスキップするにはどうすればよいですか?


StackWalker API Java 9で導入されました 、および任意の時点での現在のスレッドのスタックトレースのスナップショットを提供し、それをウォークオーバーするメソッドがあります。 StackWalkerを使用する利点 Thread ::getStackTrace()上のクラスはフィルタリング またはスキップ 特定のクラスを取得し、クラス自体を宣言するインスタンスを取得し、完全なスタックトレース自体をプルする代わりに、ショートスタックトレースまたはフルスタックトレースを取得します。

以下の例では、 java.util.stream.Stream.skip()を使用できます。 スタックフレームをスキップする方法。

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() {
      List<StackFrame> framesAfterSkip = StackWalker.getInstance(StackWalker.Option.RETAIN_CLASS_REFERENCE).walk((s) ->
s.skip(2).collect(Collectors.toList()));
      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();
      }
   }
}
出力
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)]

  1. Javaで他のパッケージのクラスを使用する方法

    ボスクラスが給与パッケージで定義されている例を使用して理解できます。 package payroll; public class Boss {    public void payEmployee(Employee e) {       e.mailCheck();    } } Employeeクラスが給与パッケージに含まれていない場合はどうなりますか?次に、Bossクラスは、別のパッケージのクラスを参照するために、次のいずれかの手法を使用する必要があります。 クラスの完全修飾名を使用できます。例- payroll.

  2. JavaでJSONを解析する方法

    このチュートリアルでは、さまざまなライブラリを使用してJavaでJSONを解析する方法を見ていきます。 JSONはJavaScriptObjectNotationの略で、JavaScriptのサブセットに基づいています。 データ交換フォーマットとして、Webプログラミングで広く使用されています。ここでは、org.jsonを使用してJavaでJSONを解析する方法を示します。 ライブラリ。 JSONオブジェクトは、順序付けされていないキーと値のペアのセットです。 JSON配列は、順序付けられた値のコレクションです。値自体はオブジェクトまたは配列である可能性があります。 pageNameの