我有一種情況,我需要以編程方式設置具有參數Class<? extends Annotation>
的東西,但我無法弄清楚如何將Annotation類傳遞給此方法。如何向Class <?的參數提供有效的類。擴展Annotation>?
舉例來說,如果我有javax.persistence.Entity
,我嘗試setAnnotation(javax.persistence.Entity.class)
我得到一個錯誤說Class<Entity>
不適用於這些參數。但是,這是一個具有@interface
屬性的類;這顯然是一個註釋。我做錯了什麼,我該如何適當地發送價值?
原因是我從Spring XML配置到@Configuration
類。這是很容易有這樣做在一個XML文件:
<property name="annotation" value="javax.persistence.Entity" />
,但我不知道春天是做,使這項工作。
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