[转载]在Java代码运行时获取当前和调用者的行号,方法名,类名,文件名
时间: 2024-03-16 20:46:59 浏览: 104
在Java中,可以使用StackTraceElement类来获取当前方法的行号、方法名、类名和文件名,以及调用该方法的方法的信息。下面是示例代码:
```
StackTraceElement[] stackTraceElements = Thread.currentThread().getStackTrace();
if (stackTraceElements.length >= 2) {
// 获取当前方法信息
StackTraceElement currentMethod = stackTraceElements[1];
String className = currentMethod.getClassName();
String methodName = currentMethod.getMethodName();
String fileName = currentMethod.getFileName();
int lineNumber = currentMethod.getLineNumber();
System.out.println("当前方法信息:");
System.out.println("类名:" + className);
System.out.println("方法名:" + methodName);
System.out.println("文件名:" + fileName);
System.out.println("行号:" + lineNumber);
// 获取调用该方法的方法信息
StackTraceElement callerMethod = stackTraceElements[2];
String callerClassName = callerMethod.getClassName();
String callerMethodName = callerMethod.getMethodName();
String callerFileName = callerMethod.getFileName();
int callerLineNumber = callerMethod.getLineNumber();
System.out.println("调用该方法的方法信息:");
System.out.println("类名:" + callerClassName);
System.out.println("方法名:" + callerMethodName);
System.out.println("文件名:" + callerFileName);
System.out.println("行号:" + callerLineNumber);
}
```
需要注意的是,获取方法信息的代码必须位于该方法内部。如果将该代码放在其他方法中,则获取到的信息可能是其他方法的信息。另外,由于获取方法信息的代码本身也会被添加到堆栈跟踪中,因此需要使用`stackTraceElements[2]`来获取调用该方法的方法的信息。
阅读全文