だから私はコードを持っています:
@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"
を取得したいと思います。リフレクションを使用してどうすればよいですか?
@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());
}
_
はい。メソッド定義にアクセスするには、リフレクションを使用する必要があります。 Class#MgetMethods() を使用して、メソッドの定義を取得できます。
オブジェクトの場合、obj.getClass()
を呼び出してクラス定義を取得します。