我正在尝试从intellij打印某个代码的当前行号(ide的行号)。我该怎么办?
1 System.out.print(getCurrentLineNo());//sample code
2 System.out.print(getCurrentLineNo());//sample code
3 System.out.print(getCurrentLineNo());//sample code
4 System.out.print(getCurrentLineNo());//sample code
答案 0 :(得分:3)
一种方法是获取堆栈跟踪元素并调用getLineNumber
。
public static int getCurrentLineNumber() {
return Thread.currentThread().getStackTrace()[2].getLineNumber();
}
请注意,我使用了索引2
,因为它引用了调用getCurrentLineNumber
的方法的框架。如果您只是内联进行此操作,即像这样:
System.out.println(Thread.currentThread().getStackTrace()[1].getLineNumber());
您应该改用索引1
。
请注意,索引0
指的是getStackTrace
方法的框架。
答案 1 :(得分:1)
我想为此而获得StatckTrace太昂贵了,但是它可以帮助您进行一些调试。
System.out.println(new Exception().getStackTrace()[0].getLineNumber());
此外,您可以查看here
答案 2 :(得分:1)
您可以获得这样的行号...
public static int getCurrentLineNo() {
return Thread.currentThread().getStackTrace()[2].getLineNumber();
}