Dar*_*rek 30 java reflection aspectj
所以我有一个代码:
@Path("/foo")
public class Hello {
@GET
@Produces("text/html")
public String getHtml(@Context Request request, @Context HttpServletRequest requestss){
...
}
Run Code Online (Sandbox Code Playgroud)
我正在使用AspectJ来捕获对getHtml方法的所有调用.我想获得传递的参数@Produces,并@Path在我的建议,即"/foo"与"text/html"在这种情况下.我怎么能用反射来做呢?
har*_*rsh 38
要获取@Path参数的值:
String path = Hello.class.getAnnotation(Path.class).value();
Run Code Online (Sandbox Code Playgroud)
同样,一旦掌握了 Method getHtml
Method m = Hello.class.getMethod("getHtml", ..);
String mime = m.getAnnotation(Produces.class).value;
Run Code Online (Sandbox Code Playgroud)
注释基于接口逻辑。您需要调用它的有效成员来检索值。
定义
public @interface Produces {
String type();
}
Run Code Online (Sandbox Code Playgroud)
阅读范例
for (Method m: SomeClass.class.getMethods() {
Produces produce = m.getAnnotation(Produces.class);
if (produce != null)
System.out.println(produce.type());
}
Run Code Online (Sandbox Code Playgroud)
是。您必须使用反射来访问方法定义。您可以使用Class#MgetMethods()获取方法的定义
对于对象,您可以调用obj.getClass()以获取类定义。