欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java編程實(shí)現(xiàn)獲取當(dāng)前代碼行行號的方法示例

 更新時間:2017年08月17日 11:21:20   作者:念月思靈  
這篇文章主要介紹了Java編程實(shí)現(xiàn)獲取當(dāng)前代碼行行號的方法,結(jié)合實(shí)例形式分析了java基于StackTraceElement對象實(shí)現(xiàn)獲取代碼行號的相關(guān)操作技巧,需要的朋友可以參考下

本文實(shí)例講述了Java編程實(shí)現(xiàn)獲取當(dāng)前代碼行行號的方法。分享給大家供大家參考,具體如下:

最近的項(xiàng)目中,為了實(shí)現(xiàn)自定義的log類,能夠輸出具體的代碼行行號,我通過使用StackTraceElement對象實(shí)現(xiàn)了。

具體內(nèi)容請參考下面的Demo代碼。這里指出需要注意的幾個問題:

1. 程序中返回的代碼行行號,是新建StackTrackElement對象的那一行。
2. 可以通過傳參的方法實(shí)現(xiàn)輸出特定行行號。

具體實(shí)現(xiàn)代碼:

/**
*
*/
package leo.demo.training;
/**
* Get current java file name and current code line number
* @author Leo Xie
*/
public class CurrentLine {
  /**
  * @param args
  */
  public static void main(String[] args) {
    StackTraceElement ste1 = null;
    // get current thread and its related stack trace
    StackTraceElement[] steArray = Thread.currentThread().getStackTrace();
    int steArrayLength = steArray.length;
    String s = null;
    // output all related info of the existing stack traces
    if(steArrayLength==0) {
      System.err.println("No Stack Trace.");
    } else {
      for (int i=0; i<steArrayLength; i++) {
        System.out.println("Stack Trace-" + i);
        ste1 = steArray[i];
        s = ste1.getFileName() + ": Line " + ste1.getLineNumber();
        System.out.println(s);
      }
    }
    // the following code segment will output the line number of the "new " clause
    // that's to say the line number of "StackTraceElement ste2 = new Throwable().getStackTrace()[0];"
    StackTraceElement ste2 = new Throwable().getStackTrace()[0];
    System.out.println(ste2.getFileName() + ": Line " + ste2.getLineNumber());
    // the following clause will output the line number in the external method "getLineInfo()"
    System.out.println(getLineInfo());
    // the following clause will output its current line number
    System.out.println(getLineInfo(new Throwable().getStackTrace()[0]));
  }
  /**
  * return current java file name and code line number
  * @return String
  */
  public static String getLineInfo() {
    StackTraceElement ste3 = new Throwable().getStackTrace()[0];
    return (ste3.getFileName() + ": Line " + ste3.getLineNumber());
  }
  /**
  * return current java file name and code line name
  * @return String
  */
  public static String getLineInfo(StackTraceElement ste4) {
    return (ste4.getFileName() + ": Line " + (ste4.getLineNumber()));
  }
}

更多關(guān)于java算法相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Java數(shù)學(xué)運(yùn)算技巧總結(jié)》、《Java數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Java操作DOM節(jié)點(diǎn)技巧總結(jié)》、《Java文件與目錄操作技巧匯總》和《Java緩存操作技巧匯總

希望本文所述對大家java程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • 分享Java常用開發(fā)編輯器工具

    分享Java常用開發(fā)編輯器工具

    這篇文章主要給大家分享了分享Java常用開發(fā)編輯器工具,文章內(nèi)容介紹非常詳細(xì),具有很大的參考價值,需要的小伙伴可以參考一下,希望對你的工作或?qū)W習(xí)有一定的幫助
    2022-03-03
  • Java中的Optional使用詳細(xì)說明

    Java中的Optional使用詳細(xì)說明

    這篇文章主要介紹了Java中的Optional使用詳細(xì)說明,Optional就是相當(dāng)于把對象包了一層,將判斷空的部分代碼給單獨(dú)抽出來了,主要就是為了避免null引起的部分問題,需要的朋友可以參考下
    2023-11-11
  • Java微服務(wù)分布式調(diào)度Elastic-job環(huán)境搭建及配置

    Java微服務(wù)分布式調(diào)度Elastic-job環(huán)境搭建及配置

    Elastic-Job在配置中提供了JobEventConfiguration,支持?jǐn)?shù)據(jù)庫方式配置,會在數(shù)據(jù)庫中自動創(chuàng)建JOB_EXECUTION_LOG和JOB_STATUS_TRACE_LOG兩張表以及若干索引,來記錄作業(yè)的相關(guān)信息
    2023-02-02
  • spring-boot項(xiàng)目啟動遲緩異常排查解決記錄

    spring-boot項(xiàng)目啟動遲緩異常排查解決記錄

    這篇文章主要為大家介紹了spring-boot項(xiàng)目啟動遲緩異常排查解決記錄,突然在本地啟動不起來了,表象特征就是在本地IDEA上運(yùn)行時,進(jìn)程卡住也不退出,應(yīng)用啟動時加載相關(guān)組件的日志也不輸出
    2022-02-02
  • Java中的升序和降序問題

    Java中的升序和降序問題

    這篇文章主要介紹了Java中的升序和降序問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • Spring注解開發(fā)生命周期原理解析

    Spring注解開發(fā)生命周期原理解析

    這篇文章主要介紹了Spring注解開發(fā)生命周期原理解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-09-09
  • java 單例模式(懶漢式與餓漢式)

    java 單例模式(懶漢式與餓漢式)

    這篇文章主要介紹了java 單例模式的相關(guān)資料,這里對懶漢式與餓漢式都做了實(shí)例介紹,需要的朋友可以參考下
    2017-07-07
  • Java ThreadLocal詳解_動力節(jié)點(diǎn)Java學(xué)院整理

    Java ThreadLocal詳解_動力節(jié)點(diǎn)Java學(xué)院整理

    ThreadLocal,很多地方叫做線程本地變量,也有些地方叫做線程本地存儲,本文會詳細(xì)的介紹一下,有興趣的可以了解一下
    2017-06-06
  • Java集合中的CopyOnWriteArrayList使用詳解

    Java集合中的CopyOnWriteArrayList使用詳解

    這篇文章主要介紹了Java集合中的CopyOnWriteArrayList使用詳解,CopyOnWriteArrayList是ArrayList的線程安全版本,從他的名字可以推測,CopyOnWriteArrayList是在有寫操作的時候會copy一份數(shù)據(jù),然后寫完再設(shè)置成新的數(shù)據(jù),需要的朋友可以參考下
    2023-12-12
  • Spring中的FactoryBean與ObjectFactory詳解

    Spring中的FactoryBean與ObjectFactory詳解

    這篇文章主要介紹了Spring中的FactoryBean與ObjectFactory詳解,FactoryBean是一種特殊的bean,本身又是個工廠,實(shí)現(xiàn)了FactoryBean的bean會被注冊到容器中,需要的朋友可以參考下
    2023-12-12

最新評論