我正在调用一种方法N次:
Set<Class<?>> userManagementEntities = new Reflections("com.domain.api.userManagement.domain").getTypesAnnotatedWith(Entity.class);
返回Set<Class<?>>
。
我有一个二传手exposeIdsFor(Class<?>... domainTypes)
如何转换Set<Class<?>>
以便函数exposeIdsFor
不会抛出编译错误?
答案 0 :(得分:3)
您正在创建一个列表列表。
你也不需要将ArrayList复制到ArrayList中,你只是复制一个列表;更不用说它必须是array。
只需将ArrayList
与addAll
放在一起。
List<Class<?>> list = new ArrayList<>();
list.addAll(new Reflections("com.domain.api.userManagement.domain").getTypesAnnotatedWith(Entity.class));
// ...
Class<?>[] array = list.toArray(new Class<?>[0]);
config.exposeIdsFor(array);
答案 1 :(得分:1)
看起来您希望每个Set<Class<?>>
只包含一个对象。如果是这种情况,请添加一个帮助方法从集合中选择项目,如下所示:
static Class<?> getAnnotatedClass(String name, Class<?> annotated) {
Set<Class<?>> res = new Reflections(name).getTypesAnnotatedWith(annotated);
if (res.size() != 1) {
throw new IllegalStateException("Missing "+name);
}
return res.iterator().next();
}
答案 2 :(得分:1)
方法exposeIdsFor(Class<?>... domainTypes)
需要一组Class
个对象。您可以使用Set<Class<?>>
方法将toArray
转换为数组。
exposeIdsFor(userManagementEntities.toArray(new Class[userManagementEntities.size()]));