gpt4 book ai didi

java - 如何向参数为 Class< 的方法提供有效的类?扩展注释>?

转载 作者:行者123 更新时间:2023-11-30 04:47:59 24 4
gpt4 key购买 nike

我遇到一种情况,我需要以编程方式设置参数为 Class<? extends Annotation> 的内容。但我不知道如何将 Annotation 类传递给这个方法。

例如,如果我有 javax.persistence.Entity我尝试setAnnotation(javax.persistence.Entity.class)我收到一条错误消息 Class<Entity>不适用于这些参数。但是,该类具有 @interface属性;这显然是一个注释。我做错了什么以及如何正确发送值?

原因是我要从 Spring XML 配置转到类 @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);

可行,但有更好的方法吗?

最佳答案

这是适合我的 API(都使用 Eclipse 和 javac 编译器):

public void setAnnotations(
Collection<? extends Class<? extends Annotation>> annotations) {

当然,这意味着您必须更改 Stuff 本身的一些内部工作原理...

另请注意 Collection 参数类型,因为 Collections.singleton() 返回一个 Set,而不是 List >。也许您打算使用 Collections.singletonList() 来代替?

关于java - 如何向参数为 Class< 的方法提供有效的类?扩展注释>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10532544/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com