获取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()
来获取类定义。