获取Java中注释的参数值

所以我有一个代码:

@Path("/foo") public class Hello { @GET @Produces("text/html") public String getHtml(@Context Request request, @Context HttpServletRequest requestss){ ... } 

我使用AspectJ来捕获所有对getHtml方法的调用。 我想在我的建议中将参数传递给@Produces@Path ,在这种情况下是"/foo""text/html" 。 我怎么能用reflection呢?

要获取@Path参数的值:

 String path = Hello.class.getAnnotation(Path.class).value(); 

同样,一旦掌握了Method getHtml

 Method m = Hello.class.getMethod("getHtml", ..); String mime = m.getAnnotation(Produces.class).value; 

注释基于接口逻辑。 您需要调用它的有效成员来检索值。

定义

 public @interface Produces { String type(); } 

阅读例子

 for (Method m: SomeClass.class.getMethods() { Produces produce = m.getAnnotation(Produces.class); if (produce != null) System.out.println(produce.type()); } 

是。 您必须使用reflection来访问方法定义。 您可以使用Class#MgetMethods()来获取方法的定义

对于对象,可以调用obj.getClass()来获取类定义。