将类作为参数传递给方法,并在If语句中使用此参数

时间:2015-09-03 07:43:25

标签: java class runtime-type

我想有这样的事情:

(iterator.next() instanceof clazz)

我主要讨论的是这个部分:app.use() - 这是否可以将Class作为参数传递给它? Eclipse说“clazz无法解析为某种类型”。

2 个答案:

答案 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;
}