java 获取当前正在执行的方法的方法名
时间: 2023-09-09 21:08:01 浏览: 100
可以通过Java反射机制中的StackTraceElement类来获取当前正在执行的方法的方法名。
示例代码如下:
```java
public class Example {
public static void main(String[] args) {
String methodName = new Object(){}.getClass().getEnclosingMethod().getName();
System.out.println("当前正在执行的方法名:" + methodName);
}
}
```
运行结果:
```
当前正在执行的方法名:main
```
注意,这种方法只适用于获取当前正在执行的方法的方法名,不能获取其他方法的方法名。
相关问题
在Java中获取正在执行方法的县城
在Java中可以通过Thread.currentThread()方法获取当前正在执行的线程,然后再通过获取当前线程的堆栈信息来获取正在执行的方法。
以下是获取正在执行方法的线程和方法名的示例代码:
```java
Thread thread = Thread.currentThread();
StackTraceElement[] stackTraceElements = thread.getStackTrace();
String methodName = stackTraceElements[1].getMethodName(); // 获取调用方法名
String className = stackTraceElements[1].getClassName(); // 获取调用类名
```
其中,`stackTraceElements[1]`表示获取当前方法的上一级方法信息,因为当前方法信息是在栈顶,所以需要获取上一级方法信息。
需要注意的是,这种方式只适用于获取当前线程执行的方法信息,如果需要获取其他线程执行的方法信息,需要使用Java的调试工具或者第三方工具来实现。
java 如何获取当前代码所在方法
在Java中获取当前代码所在方法可以通过以下几种方式实现:
1.使用StackTraceElement类
通过StackTraceElement类的方法可以获取当前线程的调用栈信息,包括当前代码所在的方法信息。具体代码如下:
```java
StackTraceElement[] stackTrace = Thread.currentThread().getStackTrace();
String methodName = stackTrace[1].getMethodName();
```
其中stackTrace[0]为Thread.getStackTrace()方法本身,stackTrace[1]为获取当前代码所在的方法。
2.使用反射机制
可以通过反射机制获取当前代码所在的方法信息。具体代码如下:
```java
StackTraceElement[] stackTrace = Thread.currentThread().getStackTrace();
Class<?> clazz = Class.forName(stackTrace[1].getClassName());
Method method = clazz.getDeclaredMethod(stackTrace[1].getMethodName());
```
其中stackTrace[0]为Thread.getStackTrace()方法本身,stackTrace[1]为获取当前代码所在的方法。
3.使用AspectJ
使用AspectJ可以更方便地获取当前代码所在方法信息。具体代码如下:
```java
@Aspect
public class LogAspect {
@Pointcut("execution(* com.example..*.*(..))")
public void pointcut() {}
@Before("pointcut()")
public void log(JoinPoint joinPoint) {
String methodName = joinPoint.getSignature().getName();
}
}
```
通过定义切入点和切面,可以在切入点执行前获取当前代码所在方法的名称。