パラメータがClass<? extends Annotation>
のプログラムで設定する必要がある状況がありますが、このメソッドにAnnotationクラスを渡す方法がわかりません。クラス<のパラメータを持つメソッドに有効なクラスを提供するにはどうすればよいですか? Annotation>を拡張しますか?
たとえば、私がjavax.persistence.Entity
を持っていて、setAnnotation(javax.persistence.Entity.class)
を試してみると、これらの引数にはClass<Entity>
が適用されないというエラーが表示されます。ただし、それは@interface
属性を持つクラスです。それは明らかに注釈です。私は間違って何をしており、どのようにして適切に値を送ることができますか?
私はSpringのXML設定からクラス@Configuration
に向かいます。
<property name="annotation" value="javax.persistence.Entity" />
これを行うには簡単ですが、私はSpringがその作業を行うために何をしているのか分かりません。
public class Stuff {
private List<Class<? extends Annotation>> annotations;
public List<Class<? extends Annotation>> getAnnotations() {
return annotations;
}
public void setAnnotations(List<Class<? extends Annotation>> annotations) {
this.annotations = annotations;
}
}
public class StuffTest {
@Test
public void test() {
new Stuff().setAnnotations(Collections.singletonList(javax.persistence.Entity.class));
// this does not compile
}
}
編集:
List list = new ArrayList();
list.add(javax.persistence.Entity.class);
stuff.setAnnotations(list);
作品が、良い方法はありますか?
SSCCEを投稿できますか?上記のシナリオはうまくいくはずです。 – Perception
確かに、いくつか教えてください。私は実際のシナリオがこれらのリストであることに注意しなければならないが、それがどのように問題を複雑にするかわからない。 – AHungerArtist
@Perceptionが追加されました – AHungerArtist