1

我想要这样的东西:

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 clazz) {
            list.add(iterator.next())
        }       
    }
    return list;
}

我主要谈论这部分:(iterator.next() instanceof clazz)- 这甚至可以像这样将 Class 作为参数传递吗?Eclipse 说“无法将 clazz 解析为类型”。

4

2 回答 2

3

您可以使用该isAssignableFrom方法。另外,请注意您在循环中有两个调用next(),因此您将跳过一半元素 - 您应该将此调用的结果提取到局部变量:

while (iterator.hasNext()) {
    Type t = iterator.next();
    if (clazz.isAssignableFrom(t.getClass())) {
        list.add(t)
    }       
}

编辑:
正如@Fildor 在评论中指出的那样,您也忘记了 initialized list。而不是初始化为null您当前拥有的列表,您应该有一些List<Type> list = new LinkedList<>();.

于 2015-09-03T07:53:18.023 回答
-1

您已经提到了参考,但您必须在那里使用该类:-

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;
}
于 2015-09-03T07:53:04.303 回答