のパラメーターを持つものをプログラムで設定する必要がある状況がありますが、Class<? extends Annotation>
このメソッドに Annotation クラスを渡す方法がわかりません。
たとえば、持っていjavax.persistence.Entity
て試してみると、これらの引数には適用できないsetAnnotation(javax.persistence.Entity.class)
というエラーが表示されます。Class<Entity>
ただし、それは@interface
属性を持つクラスです。それは明らかに注釈です。何が間違っているのでしょうか? また、値を適切に送信するにはどうすればよいですか?
この理由は、Spring XML 構成から class に移行するため@Configuration
です。xml ファイルでこれを行うのは簡単です。
<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);
動作しますが、より良い方法はありますか?