私はScannotationを使ってクラスファイルをスキャンし、そのクラスのどの要素にも注釈があるすべてのクラスを取得しています。反射を使用すると、メソッド内のパラメータのすべての注釈を見つけることができましたが、後でそのパラメータを取得できるように(または何を呼び出すか)、これらの注釈のオブジェクトが必要です。Javaのメソッドまたはコンストラクタのパラメータの注釈のオブジェクトを得る
これは私のコードの一部であり、私が望む注釈が返されますが、私はこれらのコードで作業することはできません。
public Set<Class> getParametersAnnotatedBy(Class<? extends Annotation> annotation) {
for (String s : annotated) {
//annotated is set containing names of annotated classes
clazz = Class.forName(s);
for (Method m : clazz.getDeclaredMethods()) {
int i = 0;
Class[] params = m.getParameterTypes();
for (Annotation[] ann : m.getParameterAnnotations()) {
for (Annotation a : ann) {
if (annotation.getClass().isInstance(a.getClass())) {
parameters.add(a.getClass());
//here i add annotation to a set
}
}
}
}
}
}
iは、私はそれを扱うことができます知っている私は、このような注釈、知っている場合:
@Retention(RetentionPolicy.RUNTIME)
public @interface MyAnnotation {
public String name();
public int count();
}
// ... some code to get annotations
MyAnnotation ann = (MyAnnotation) someAnnotation;
System.out.println(ann.name());
System.out.println(ann.count());
これまでのところ、私はリフレクションを使用して、このようにそれを行うことができませんでしたが... I事前にお礼を言いたいと思います。 PS:フィールドのフィールド、メソッドのメソッドなどのようなパラメータのオブジェクトを取得する方法はありますか?
少し助けてくれてありがとう。それは私の問題を実際には解決しませんでしたが、私は実現しました、それを行うより簡単な方法があります。今私はメソッド、コンストラクタ、そのパラメータと注釈のためのラッパーのいくつかの種類を作成する必要があり、これまでのところ、私はどのように考えていない... – Cviro