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

Java9のStackFrameAPIですべての属性を出力するにはどうすればよいですか?


StackWalker API Java9の新機能です 前任者のパフォーマンスが向上します スタックトラック要素。また、例外の場合にスタック要素をフィルタリングする方法を提供することもできます。 またはアプリケーションを理解する 動作 。 Java 9では、スタックトレースにアクセスする方法が非常に制限されており、スタック情報全体を一度に提供します。

以下の例では、すべての属性をスタックフレームに出力する必要があります

import java.lang.StackWalker.StackFrame;
import java.util.*;
import java.util.stream.*;
import java.lang.StackWalker.Option;

public class AllAttributesTest {
   public static void main(String args[]) {
      System.out.println("Java 9 Stack Walker API - Print all attributes in stack frame");
      StackWalker newWalker = StackWalker.getInstance(Option.RETAIN_CLASS_REFERENCE);
      List<StackWalker.StackFrame> stackFrames = newWalker.walk(frames ->  frames.limit(1).collect(Collectors.toList()));
      stackFrames.forEach(test-> {
         System.out.printf("[Bytecode Index] %d%n", test.getByteCodeIndex());
         System.out.printf("[Class Name] %s%n", test.getClassName());
         System.out.printf("[Declaring Class] %s%n", test.getDeclaringClass());
         System.out.printf("[File Name] %s%n", test.getFileName());
         System.out.printf("[Method Name] %s%n", test.getMethodName());
         System.out.printf("[Is Native] %b%n", test.isNativeMethod());
         System.out.printf("[Line Number] %d%n", test.getLineNumber());
      });
   }
}

出力

Java 9 Stack Walker API - Print all attributes in stack frame
[Bytecode Index] 21
[Class Name] AllAttributesTest
[Declaring Class] class AllAttributesTest
[File Name] AllAttributesTest.java
[Method Name] main
[Is Native] false
[Line Number] 10

  1. Javaで特定の文字列のすべての大文字を印刷するにはどうすればよいですか?

    キャラクター クラスはOのサブクラスです bject クラスであり、プリミティブ型 charの値をラップします オブジェクト内。タイプ文字のオブジェクト クラスには、タイプがcharである単一のフィールドが含まれています。 文字列の文字をループで繰り返すことですべての大文字を印刷し、個々の文字が大文字であるか、 isUpperCase()を使用していないかを確認できます。 メソッドであり、静的 方法 キャラクターの クラス。 構文 public static boolean isUpperCase(char ch) 例 public class PrintUpperCaseLetterS

  2. Javaでスタックを使用してキューを実装するにはどうすればよいですか?

    キュー クラスはコレクションを拡張します インターフェイスであり、先入れ先出し(FIFO)を使用した挿入および削除操作をサポートします 。 スタック Vectorのサブクラスです クラスであり、後入先出(LIFO)を表します オブジェクトのスタック。スタックの一番上に追加された最後の要素(In)は、スタックから削除される最初の要素(Out)にすることができます。以下のプログラムでは、スタックを使用してキューを実装することもできます。 例 import java.util.*; public class QueueUsingStackTest {    private St