我想有这样的事情:
(iterator.next() instanceof clazz)
我主要讨论的是这个部分:app.use()
- 这是否可以将Class作为参数传递给它? Eclipse说“clazz无法解析为某种类型”。
答案 0 :(得分:3)
您可以使用isAssignableFrom
方法。另外,请注意您在循环中有两次调用next()
,因此您将跳过一半元素 - 您应该将此调用的结果提取到局部变量:
while (iterator.hasNext()) {
Type t = iterator.next();
if (clazz.isAssignableFrom(t.getClass())) {
list.add(t)
}
}
修改:
强>
正如@Fildor在评论中指出的那样,你也忘了初始化list
。您应该拥有null
的内容,而不是初始化为您当前拥有的List<Type> list = new LinkedList<>();
列表。
答案 1 :(得分:-1)
你提到了引用,但你必须在那里使用Class: -
public static List<Type> getProtocolls(Class clazz, Transaction trx) {
Iterator<Type> iterator = trx.getContext().getProtocolls()
List<Type> list = null;
while (iterator.hasNext()) {
if (iterator.next() instanceof Class ) {
list.add(iterator.next())
}
}
return list;
}