最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java StackTraceElement實例代碼

 更新時間:2018年02月02日 09:12:16   作者:司馬懿字仲達  
這篇文章主要介紹了Java StackTraceElement實例代碼,分享了相關代碼示例,小編覺得還是挺不錯的,具有一定借鑒價值,需要的朋友可以參考下

本文研究的主要是Java StackTraceElement的相關內容,具體介紹如下。

  • StackTrace用棧的形式保存了方法的調用信息。
  • 可用Thread.currentThread().getStackTrace()方法得到當前線程的StackTrace信息,該方法返回的是一個StackTraceElement數組。
  • 線程中methodA調用了methodB,那么methodA先入棧methodB再入棧。數組的第一個元素保存的是棧頂元素,最后一個元素保存的棧底元素。正好與調用棧的順序相反。
  • 在StackTraceElement數組下標為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("\nthis's method name is " + getMethodName());
	}
}

輸出:

-------> StackTraceElement[]
-------> 0
java.lang.Thread.getStackTrace(Unknown Source)
StackTraceElement.getClassName() => java.lang.Thread
StackTraceElement.getFileName() => null
StackTraceElement.getLineNumber() => -1
StackTraceElement.getMethodName() => getStackTrace
StackTraceElement.isNativeMethod() => false
-------> 1
com.demo.test.StackTraceDemo.testB(StackTraceDemo.java:10)
StackTraceElement.getClassName() => com.demo.test.StackTraceDemo
StackTraceElement.getFileName() => StackTraceDemo.java
StackTraceElement.getLineNumber() => 10
StackTraceElement.getMethodName() => testB
StackTraceElement.isNativeMethod() => false
-------> 2
com.demo.test.StackTraceDemo.testA(StackTraceDemo.java:6)
StackTraceElement.getClassName() => com.demo.test.StackTraceDemo
StackTraceElement.getFileName() => StackTraceDemo.java
StackTraceElement.getLineNumber() => 6
StackTraceElement.getMethodName() => testA
StackTraceElement.isNativeMethod() => false
-------> 3
com.demo.test.StackTraceDemo.main(StackTraceDemo.java:32)
StackTraceElement.getClassName() => com.demo.test.StackTraceDemo
StackTraceElement.getFileName() => StackTraceDemo.java
StackTraceElement.getLineNumber() => 32
StackTraceElement.getMethodName() => main
StackTraceElement.isNativeMethod() => false

this's method name is main

總結

以上就是本文關于Java StackTraceElement實例代碼的全部內容,希望對大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站其他相關專題,如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!

相關文章

  • Mybatis超詳細講解構建SQL方法

    Mybatis超詳細講解構建SQL方法

    這篇文章主要為大家詳細介紹了Mybatis構建SQL,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-07-07
  • 遞歸之斐波那契數列java的3種方法

    遞歸之斐波那契數列java的3種方法

    這篇文章主要為大家詳細介紹了遞歸之斐波那契數列java的3種方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-02-02
  • 使用maven命令安裝jar包到本地倉庫的方法步驟

    使用maven命令安裝jar包到本地倉庫的方法步驟

    這篇文章主要介紹了使用maven命令安裝jar包到本地倉庫的方法步驟,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-06-06
  • MybatisPlus實現邏輯刪除功能

    MybatisPlus實現邏輯刪除功能

    這篇文章主要介紹了MybatisPlus實現邏輯刪除功能,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-12-12
  • Java數據類型(八種基本數據類型+四種引用類型)以及數據類型轉換

    Java數據類型(八種基本數據類型+四種引用類型)以及數據類型轉換

    java中除了基本數據類型之外,剩下的都是引用數據類型,下面這篇文章主要給大家介紹了關于Java數據類型(八種基本數據類型?+?四種引用類型)以及數據類型轉換的相關資料,需要的朋友可以參考下
    2024-04-04
  • Mybatis之foreach標簽內傳入list為空的問題

    Mybatis之foreach標簽內傳入list為空的問題

    這篇文章主要介紹了Mybatis之foreach標簽內傳入list為空的問題及解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • Java socket通訊實現過程及問題解決

    Java socket通訊實現過程及問題解決

    這篇文章主要介紹了Java socket通訊實現過程及問題解決,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-01-01
  • Java利用反射對list對象做過濾

    Java利用反射對list對象做過濾

    這篇文章主要介紹了Java利用反射對list對象做過濾,但是使用反射對效率有影響,但在一些特殊情況也有一定的參考價值,需要的小伙伴可以參考一下
    2022-03-03
  • Java中Lambda表達式使用詳細解讀

    Java中Lambda表達式使用詳細解讀

    這篇文章主要介紹了Java中Lambda表達式使用及詳解,lambda運行將函數作為一個方法的參數,也就是函數作為參數傳遞到方法中,使用lambda表達式可以讓代碼更加簡潔,需要的朋友可以參考下
    2023-04-04
  • Java中結束循環(huán)的方法

    Java中結束循環(huán)的方法

    這篇文章主要介紹了Java中結束循環(huán)的方法,文中有段代碼在return,結束了整個main方法,即使輸出hello world的語句位于循環(huán)體外,也不會被執(zhí)行,對java結束循環(huán)方法感興趣的朋友跟隨小編一起看看吧
    2023-06-06

最新評論

陕西省| 彭山县| 三原县| 海口市| 山东| 安吉县| 宣城市| 灵石县| 长寿区| 兴国县| 白水县| 定结县| 连山| 佳木斯市| 澄江县| 香河县| 海伦市| 铜陵市| 蕲春县| 手游| 怀柔区| 本溪市| 宿州市| 正定县| 兴山县| 平塘县| 英山县| 西藏| 家居| 承德县| 扎兰屯市| 赣州市| 财经| 松潘县| 都昌县| 本溪市| 孟津县| 基隆市| 饶平县| 灌南县| 武功县|