Java如何取源文件中文件名和行号

--

/**
 * java 测试类 <br>
 * 
 * @author song
 * @date 2012-7-9 上午09:29:15
 */
public class Test {
    public static int getLineNumber() {
        return Thread.currentThread().getStackTrace()[2].getLineNumber();
    }

    public static String getFileName() {
        System.out.println("-----");
        for (StackTraceElement e : Thread.currentThread().getStackTrace()) {
            System.out.println("-" + e.getClassName() + "-" + e.getFileName()
                    + "-" + e.getLineNumber() + "-" + e.getMethodName());
        }
        System.out.println("-----");
        return Thread.currentThread().getStackTrace()[2].getFileName();
    }

    public static void main(String args[]) {
        System.out.println("[" + getFileName() + " line:" + getLineNumber()
                + "]" + "Hello World!");
        System.out.println(Thread.currentThread());
    }
}

留下一个问题,上面程序中的magic数字 2 代表什么含义呢?

0是thread.getCurrentThread()
1是getLineNumber()
2才是调用getLineNumber的类

---

原文地址:https://www.cnblogs.com/syc001/p/2606136.html