Java编程实现获取当前代码行行号的方法示例
程序员文章站
2024-02-23 12:51:04
本文实例讲述了java编程实现获取当前代码行行号的方法。分享给大家供大家参考,具体如下:
最近的项目中,为了实现自定义的log类,能够输出具体的代码行行号,我通过使用st...
本文实例讲述了java编程实现获取当前代码行行号的方法。分享给大家供大家参考,具体如下:
最近的项目中,为了实现自定义的log类,能够输出具体的代码行行号,我通过使用stacktraceelement对象实现了。
具体内容请参考下面的demo代码。这里指出需要注意的几个问题:
1. 程序中返回的代码行行号,是新建stacktrackelement对象的那一行。
2. 可以通过传参的方法实现输出特定行行号。
具体实现代码:
/** * */ 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())); } }
更多关于java算法相关内容感兴趣的读者可查看本站专题:《java数学运算技巧总结》、《java数据结构与算法教程》、《java操作dom节点技巧总结》、《java文件与目录操作技巧汇总》和《java缓存操作技巧汇总》
希望本文所述对大家java程序设计有所帮助。