我有一种情况,我需要以编程方式设置具有参数的东西,Class<? extends Annotation>
但我无法弄清楚如何将 Annotation 类传递给该方法。
例如,如果我有javax.persistence.Entity
并且我尝试过,setAnnotation(javax.persistence.Entity.class)
我会收到一条错误消息,说Class<Entity>
不适用于这些论点。但是,这是一个具有@interface
属性的类;这显然是一个注释。我做错了什么,如何正确发送值?
这样做的原因是我要从 Spring XML configuration 到 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);
有效,但有更好的方法吗?