Java 获取调用方法的注释值
我想从调用另一个方法的方法中获取注释中的值,该值需要与被调用方法中使用的注释一起使用 范例Java 获取调用方法的注释值,java,annotations,Java,Annotations,我想从调用另一个方法的方法中获取注释中的值,该值需要与被调用方法中使用的注释一起使用 范例 @MyAnnotation(id="method-invoker") public void invoker(){ executor(); } @ChildMethod public void executor(){ } 在上面的示例中,我希望在处理@ChildMethod注释时,在@MyAnnotation中的id字段中设置值 如何执行此操作?首先必须获取堆栈跟踪,然后从中提取调用方的名称
@MyAnnotation(id="method-invoker")
public void invoker(){
executor();
}
@ChildMethod
public void executor(){
}
在上面的示例中,我希望在处理@ChildMethod
注释时,在@MyAnnotation
中的id
字段中设置值
如何执行此操作?首先必须获取堆栈跟踪,然后从中提取调用方的名称,然后获取
方法并获取其注释:
String id = getClass().getMethod(new Throwable().getStackTrace()[1].getMethodName()).getAnnotation(MyAnnotation.class).id();
(显然,在一行中顺序执行如此多的调用是一种不好的风格,但例如,它是可以的)
但这种方法是有限的。它不支持方法重载。例如,如果有两个名为invoker()
的方法在一个类中具有不同的签名,则使用纯反射API无法区分它们
幸运的是,我实现了一个名为CallStack的库,它可以做到这一点:
使用CallStack
可以说:
CallStack.getCallStack().getFunction().getAnnotation(MyAnnotation.class).id()
首先必须获取堆栈跟踪,然后从中提取调用方的名称,然后获取方法
并获取其注释:
String id = getClass().getMethod(new Throwable().getStackTrace()[1].getMethodName()).getAnnotation(MyAnnotation.class).id();
(显然,在一行中顺序执行如此多的调用是一种不好的风格,但例如,它是可以的)
但这种方法是有限的。它不支持方法重载。例如,如果有两个名为invoker()
的方法在一个类中具有不同的签名,则使用纯反射API无法区分它们
幸运的是,我实现了一个名为CallStack的库,它可以做到这一点:
使用CallStack
可以说:
CallStack.getCallStack().getFunction().getAnnotation(MyAnnotation.class).id()