Java StockTraceElementのインスタンスコード


本研究の主な内容はJava StockTraceElementです。具体的には以下の通りです。
  • StockTraceは、方法の呼び出し情報をスタック形式で保存しています。
  • は、現在のスレッドのStockTrace情報を取得するために、Thread.current Thread().get StockTracement配列を返します。
  • スレッドでmethodAがmethodBを呼び出したら、methodAが先にスタックmethodBに入って再スタックに入ります。配列の最初の要素は、スタックトップ要素、最後の要素が保存されているスタックベース要素です。ちょうどスタックを呼び出す順序とは逆である。
  • は、StocTrace Element配列の下に2と表記された要素の中に、現在の方法の所属ファイル名、現在の方法の属するクラス名、およびこの方法の名前を保存しており、それ以外にも方法で呼び出された行数を取得することができる。この特性はログモジュールを設計するために使用できます。
  • 例:
    
    package com.demo.test;
    public class StackTraceDemo {
    	public static void testA() {
    		testB();
    	}
    	public static void testB() {
    		StackTraceElement[] stackTraceElements = Thread.currentThread().getStackTrace();
    		System.out.println("-------> StackTraceElement[]");
    		for (int i = 0; i < stackTraceElements.length; i++) {
    			System.out.println("-------> " + i);
    			System.out.println(stackTraceElements[i]);
    			System.out.println("StackTraceElement.getClassName() => " + stackTraceElements[i].getClassName());
    			System.out.println("StackTraceElement.getFileName() => " + stackTraceElements[i].getFileName());
    			System.out.println("StackTraceElement.getLineNumber() => " + stackTraceElements[i].getLineNumber());
    			System.out.println("StackTraceElement.getMethodName() => " + stackTraceElements[i].getMethodName());
    			System.out.println("StackTraceElement.isNativeMethod() => " + stackTraceElements[i].isNativeMethod());
    		}
    	}
    	public static String getMethodName() {
    		StackTraceElement[] stackTraceElements = Thread.currentThread().getStackTrace();
    		if(stackTraceElements.length > 2) {
    			return stackTraceElements[2].getMethodName();
    		}
    		return null;
    	}
    	public static void main(String[] args) {
    		testA();
    		System.out.println("
    this's method name is " + getMethodName()); } }
    出力:
    --->StocTrace Element[]
    --->0
    java.lang.Thread.get StockTrace(Uniknown Source)
    StockTrace Element.get Class Name()=>java.lang.Thread
    StockTraceElement.get FileName()=>null
    StockTraceElement.get Linenumber()=>-1
    StockTrace Element.get MethodName=>get StockTrace
    StockTraceElement.isNativeMethod()=>false
    --->1
    comp.demo.test.StockTrace Demo.testB(StockTrace Demo.java:10)
    StockTrace Element.get Class Name()=>comp.demo.test.StockTrace Demo
    StockTrace Element.get FileName()=>StockTrace Demo.java
    StockTrace Element.get Linenumber()=>10
    StockTrace Element.get MethodName()=>testB
    StockTraceElement.isNativeMethod()=>false
    --->2
    comp.demo.test.StocTrace Demo.testA(StockTrace Demo.java:6)
    StockTrace Element.get Class Name()=>comp.demo.test.StockTrace Demo
    StockTrace Element.get FileName()=>StockTrace Demo.java
    StockTraceElement.get Linenumber()=>6
    StockTrace Element.get MethodName()=>testA
    StockTraceElement.isNativeMethod()=>false
    --->3
    comp.demo.test.StocTrace Demo.main(StockTrace Demo.java:32)
    StockTrace Element.get Class Name()=>comp.demo.test.StockTrace Demo
    StockTrace Element.get FileName()=>StockTrace Demo.java
    StockTrace Element.get Linenumber()=>32
    StockTrace Element.get MethodName()=>main
    StockTraceElement.isNativeMethod()=>false
    this's method name is main
    締め括りをつける
    以上がJava StockTrace Elementの実例コードの全部です。皆さんの助けをお願いします。興味のある方は引き続き当駅の他のテーマを参照してください。友達のサポートに感謝します。