Java StockTraceElementのインスタンスコード
本研究の主な内容はJava StockTraceElementです。具体的には以下の通りです。 StockTraceは、方法の呼び出し情報をスタック形式で保存しています。 は、現在のスレッドのStockTrace情報を取得するために、Thread.current Thread().get StockTracement配列を返します。 スレッドでmethodAがmethodBを呼び出したら、methodAが先にスタックmethodBに入って再スタックに入ります。配列の最初の要素は、スタックトップ要素、最後の要素が保存されているスタックベース要素です。ちょうどスタックを呼び出す順序とは逆である。 は、StocTrace Element配列の下に2と表記された要素の中に、現在の方法の所属ファイル名、現在の方法の属するクラス名、およびこの方法の名前を保存しており、それ以外にも方法で呼び出された行数を取得することができる。この特性はログモジュールを設計するために使用できます。 例:
--->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の実例コードの全部です。皆さんの助けをお願いします。興味のある方は引き続き当駅の他のテーマを参照してください。友達のサポートに感謝します。
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の実例コードの全部です。皆さんの助けをお願いします。興味のある方は引き続き当駅の他のテーマを参照してください。友達のサポートに感謝します。